反序列化字典数组<string,object> </string,object>

时间:2011-04-04 12:15:41

标签: c# .net json .net-4.0 dictionary

我正在获取一个带有字符串的JSON对象:

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

我正在尝试使用DataContractSerializer对其进行反序列化,并将DataMember契约与public Dictionary<string,object> [] rec;类型的成员进行反序列化但是我收到如下错误:

  

'System.Object'类型的对象不能   转换为类型   'System.Collections.Generic.Dictionary`2 [System.String,System.Object的]'。

有人可以向我解释我应该如何反序列化这个字符串吗?

2 个答案:

答案 0 :(得分: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...] - 属性的类上进行增强...如果您正在使用DataMember - 属性,则可以直接使用json.net,因为它们支持使用DataMember和alikes ......

序列化也应该起作用 - 只是尝试了一些列表和类似的东西,但对我来说效果更好!

答案 1 :(得分:0)

我认为你应该使用JavaScriptSerializer:

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