2014-10-10 22 views
-1

我想反序列化一個JSON響應到C#類。 問題是,這些元素被命名爲"1" , "2"等,在轉換爲C#類時,由於變量不能被命名爲"1",因此會產生問題。 使用相同的變量名稱,反序列化似乎不起作用。如何將php-> json轉換爲c#類?

我的陣列形式:

[{ 
    "0": "21838", 
    "1": "2014-10-15", 
    "2": "2014-10-15", 
    "3": "745", 
    "4": "140.00", 
    "32": "140.00", 
    "5": "140.00", 
    "33": "140.00", 
    "7": "0.00", 
    "34": "0.00", 
    "35": 0, 
    "8": "30", 
    "9": "10", 
    "10": "6", 
    "11": "0", 
    "12": "0000-00-00", 
    "13": "0.00", 
    "36": "", 
    "14": "1833", 
    "15": "1", 
    "16": "1", 
    "17": "184", 
    "18": "305", 
    "19": "1", 
    "20": "2264", 
    "21": "3214", 
    "22": {"0":"123"} 
    /* etc, etc, etc */ 
}] 

我如何反序列化到C#類呢? *已更新,json有陣列陣列

回答

2

您應該可以使用JavaScriptSerializer反序列化爲一個字典數組。

var json = "bla bla bla json"; 

var dictionaries = new JavaScriptSerializer() 
    .Deserialize<Dictionary<string, string>[]>(json); 

foreach (var dictionary in dictionaries) 
{ 
    foreach (var pair in dictionary) 
    { 
     Console.WriteLine("{0} => {1}", pair.Key, pair.Value); 
    } 
} 

Console.WriteLine(dictionaries[0]["0"]); // 21838 
+0

感謝馬修的答覆,我嘗試使用您的解決方案,但它說 我一直在使用Newtonsoft.Json會拋出同樣的異常試圖「類型JSON反序列化過程中‘System.String’的定義無參數的構造函數」 。 – 2014-10-10 04:45:21