2013-04-10 68 views
1

示例:如何将JavaScript多维数组解析为c#数组? JavaScript数组的

var array_1 = [["string 1", 2013, "string 2"], "string 3", ["string 4", , "string 5"]]; 
/* array_1[0][2] = "string 2" */ 

var array_2 = [1, , ["string 1", "string 2"]]; 
/* array_2[0][0] = 1 */ 

我需要解析JS阵列像它C#jagged arrayany other object可以由函数通过索引来访问每个子串容易,,具有:

  • 数成为字符串(1 =>"1"
  • null成为""(长度= 0的字符串)。

你能帮我怎么做吗?非常感谢你!

回答

4

Json.NET

// using 
using Newtonsoft.Json.Linq; 


string JSarray_1 = @"[[""string 1"", 2013, ""string 2""], ""string 3"", [""string 4"", , ""string 5""]]"; 
JObject j = JObject.Parse("{\"j\":" + JSarray_1 + "}"); 
MessageBox.Show((string)j["j"][0][2]); // "string 2" 
2

参见C#语言的文档:"Multidimensional Arrays (C#)"

string[,] items = new string[,] {{"string 1","string 2"},...}; 
+6

从技术上讲,有什么OP似乎也有一个锯齿状的阵列,而不是一个多维的阵列。 – 2013-04-10 05:57:42

0

由于Jagged Arrays

string[][] items = new string[3][]; 

items [0] = new string[2]; 
items [1] = new string[1]; 
items [2] = new string[2]; 

items[0][0] = "string1"; 
items[0][1] = "string3"; 
items[1][0] = "string4"; 
items[2][0] = "string5"; 
items[2][1] = "string6"; 

OR

string[][] items = new string[][] 
{ 
    new string[] {"string1", "string3"}, 
    new string[] {"string4"}, 
    new string[] {"string5", "string6"} 
}; 
0

如果您需要解析JavaScript数组到C#中的数组,可以序列的javascrip将数组转换为JSON,然后将JSON反序列化为C#数组。

此前,您需要进行一次转换:在JavaScript数组表示中将null替换为字符串。

然后,您可以让这样的事情:

var JSArrayString = @"{"array_1": [["string 1", 2013, "string 2"], "string 3", ["string 4", null, "string 5"]]}"; 
var CSharpDict = SomeJSONLibrary.Deserialize(JSString); 
var CSharpArray = CSharpDict["array_1"]; 
var myItem = CSharpArray[0][2]; 
+0

对不起,你能解释得更清楚吗?从'JSArrayString'到'CSharpArray [0] [2]'是一个很长的距离。 – Sakura 2013-04-15 09:44:57

1

我想TuyenTk正在寻找,并emigue试图描述是使用,那么“神奇”(=解析)

我推荐JSON.Net,因为这是我所有时间使用的 - 但我想这里有很多。

链接页面还包含一些简单的例子,说明如何使用它。

关于使用emptystring替换空:

var myValue = origValue ?? String.Empty; 

如果origValue为null myvalue的将被设置为 “”,否则表达式会origValue;

有关“??”的更多信息,或“空合并运算符”,因为它的名称,请参阅使用doc