2011-04-04 34 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

相关问题