2011-04-04 31 views
1

我得到一個JSON對象與像字符串:解串行化字典<串,對象>的陣列

"rec":[ 
    {"f":["T","R"],"u":316,"fName":"test","lName":"test2"}, 
    {"f":["C","R"],"u":990,"fName":"beth","lName":"tin"} 
], 

我試圖使用DataContractSerializer的反序列化,並通過具有數據成員合同成public Dictionary<string,object> [] rec;類型的成員,但我得到一個錯誤,如:類型

對象「System.Object的」不能 轉換爲類型 「System.Collections.Generic.Dictionary`2 [System.String ,System.Object的]」。

有人可以向我解釋我應該如何去反序列化這個字符串?

回答

0

我認爲你應該使用的JavaScriptSerializer:

var serializer = new JavaScriptSerializer(); 
var result = serializer.Deserialize<Dictionary<string, object>>("{" + data + "}") 
+0

[這裏是MSDN上'JavaScriptSerializer'的鏈接。](http://msdn.microsoft.com/en-us/library/system.web.script.serialization.javascriptserializer.aspx) – Timwi 2011-04-04 12:57:40

+0

嗨,這不是隻是一個單獨的字符串,但是一個更大的JSON對象的一部分。其餘的部分使用ReadObject進行反序列化,但是當它嘗試反序列化時,我得到一個異常。我在整個項目中使用DataContractSerializer,所以不確定是否改用JavaScriptSerizlizer對我來說是一個可行的選擇。謝謝 – user642770 2011-04-04 13:01:50

1

爲什麼不使用json.net?從他們的實況

反序列化:

string json = @"{""key1"":""value1"",""key2"":""value2""}"; 

Dictionary<string, string> values = JsonConvert.DeserializeObject<Dictionary<string, string>>(json); 

Console.WriteLine(values.Count); 
// 2 

Console.WriteLine(values["key1"]); 
// value1 

這可能對教學班,來增強含有某些[Json...] -attributes ......如果您正在使用DataMember -attributes工作,你可以直行json.net,如他們支持使用DataMember和...

序列化也應該工作 - 只是嘗試列表和相似的東西,但對我來說工作更多!

+0

我通過在我的主類中創建一個名爲'rec'的內部類並給它賦予了名爲f,u,fName,lName的成員來解決這個問題。大概我從錯誤的理解開始,它不是一本字典,而是一個JSON內的JSON。 – user642770 2011-04-04 13:46:31

相關問題