C# 将双精度列表转换为字符串
我有一个double数组,通过JSON发送到我的aspx页面C# 将双精度列表转换为字符串,c#,ajax,arrays,json,list,C#,Ajax,Arrays,Json,List,我有一个double数组,通过JSON发送到我的aspx页面 var array = [] //this array is having double values in it. (48.154176701412744,11.551694869995117),(48.15131361676726,11.551694869995117),(48.15555092529958,11.549291610717773) var jsonText = JSON.stringify({ list: arr
var array = [] //this array is having double values in it. (48.154176701412744,11.551694869995117),(48.15131361676726,11.551694869995117),(48.15555092529958,11.549291610717773)
var jsonText = JSON.stringify({ list: array });
以下是我将其传递给的方法:
public static void Demo(double[] list)
现在,如何访问正在发送的数组并将其转换为字符串,以便将其作为字符串保存到数据库列中?因为当我接受它为
public static void Demo(string[] list)
它甚至不接受JSON对象。当我将方法设置为:
public static void Demo(double[] list)
它将数组作为[0]。您可以使用一些分隔符将所有的双精度数连接起来:
string.Join(";", list);
但是,您应该注意使用十进制分隔符。如果值将保存为1.52;0.4,以后您可能会在另一台计算机上失败,或者更改语言环境。我将决定在这种情况下始终使用什么分隔符,并将值转换为字符串,然后使用此分隔符返回:
// unfortunately, not tested
var ni = NumberFormatInfo.CurrentInfo; // not sure if you better call Clone() here
ni.NumberDecimalSeparator = ".";
string todatabase = string.Join(";", list.Select(_ => _.ToString(ni)));
要执行相反的操作:
// unfortunately, not tested
var ni = NumberFormatInfo.CurrentInfo; // not sure if you better call Clone() here
ni.NumberDecimalSeparator = ".";
// `str` is read from database value
IEnumerable<double> fromdatabase = str.Split(';').Select(_ => double.Parse(_, ni));
注意错误处理,此代码片段将在错误值上失败,例如列表为null、str为null、str包含不可转换为双精度值,etcJSON.stringfy本身返回一个字符串,那么您为什么需要将值转换为字符串。您可以在aspx页面上使用JSON.parse'@Html.RawjsonText'解析JSON字符串。这个JSON字符串可以使用会话变量传递。我已经更新了我的问题,现在您可以理解我的确切问题了。哦,所以,我不是助手,我对JSON一无所知,但你确定数组是双精度数组吗?我看到一排双对点,也许?不!它有字符串,但当我将它发送给方法时,它在字符串处失败,但当它的值为双精度时,它至少接受JSON对象。这让我感到奇怪和困惑。@mazharrenko你能确定这个数组的确切数据类型吗?如果是,那么请告诉我,因为这将使事情变得非常简单。@ejazdogar我还不清楚。您只需将光标指向var关键字就可以知道它。断点也总是有用的