2013-04-10 65 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