2维C#字符串数组到js

时间:2014-01-16 17:42:14

标签: c# javascript arrays json javascriptserializer

我想将一个C#2 dimenssions字符串数组发送到我的JS客户端页面。

服务器:

string[,] info = ib.GetInfo();
//info is [["string1","string2","string3"],["string4","string5","string6"]]

JavaScriptSerializer ser = new JavaScriptSerializer();           
return this.Content((new JavaScriptSerializer()).Serialize(info), "text/javascript");

在客户端JS方面:

var mysr= JSON.parse(resp );

“字符串1”, “字符串2”, “STRING3”, “串,4”, “STRING5”, “string6”

结果mysr是一个1维的数组!

有什么问题?任何帮助,将不胜感激。该字符串还可以包含引号和双引号

2 个答案:

答案 0 :(得分:2)

这就是JavaScriptSerializer的工作方式。请参阅这些代码

string[,] info1 = new string[2,3]{{"string1","string2","string3"},
                                  {"string4","string5","string6"}};
var json1 = new JavaScriptSerializer().Serialize(info1);

json => ["string1","string2","string3","string4","string5","string6"]

string[][] info2 = new string[][] { new[]{ "string1", "string2", "string3" }, 
                                    new[]{ "string4", "string5", "string6" } };
var json2 = new JavaScriptSerializer().Serialize(info2);

json => [["string1","string2","string3"],["string4","string5","string6"]]

如果您无法更改方法GetInfo()的返回类型。我建议使用Json.Net

var json1 = JsonConvert.SerializeObject(info1);

它将按预期返回json字符串。

答案 1 :(得分:0)

多维数组被序列化为一维数组。您可以使用锯齿状数组而不是二维数组

您也可以使用Json.NET。 Json.NET 4.5 Release 8支持多维数组。