我正在获取一个带有字符串的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的]'。
有人可以向我解释我应该如何反序列化这个字符串吗?
答案 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 + "}")