C# 将双精度列表转换为字符串

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

我有一个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: 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包含不可转换为双精度值,etc

JSON.stringfy本身返回一个字符串,那么您为什么需要将值转换为字符串。您可以在aspx页面上使用JSON.parse'@Html.RawjsonText'解析JSON字符串。这个JSON字符串可以使用会话变量传递。

我已经更新了我的问题,现在您可以理解我的确切问题了。哦,所以,我不是助手,我对JSON一无所知,但你确定数组是双精度数组吗?我看到一排双对点,也许?不!它有字符串,但当我将它发送给方法时,它在字符串处失败,但当它的值为双精度时,它至少接受JSON对象。这让我感到奇怪和困惑。@mazharrenko你能确定这个数组的确切数据类型吗?如果是,那么请告诉我,因为这将使事情变得非常简单。@ejazdogar我还不清楚。您只需将光标指向var关键字就可以知道它。断点也总是有用的