使用字典反序列化复杂的json对象

时间:2013-06-22 12:06:15

标签: silverlight c#-4.0 json.net deserialization

我正在使用Newtonsoft Json.Net将json feed反序列化为object:

JSON:

staticKey1: value,
staticKey2: value,

results: [
{
   key1: value1,
   key2: value2,
   key3: value3,
...
   keyN: valueN
}
],

C#class:

public class MyClassName
{
    public string staticKey1 { get; set; }
    public string staticKey2 { get; set; }
    public Dictionary<String, String> results { get; set; }
}

我正在使用Newtonsoft.Json.JsonConvert.DeserializeObject(),但我得到了例外:

  

无法将当前JSON数组(例如[1,2,3])反序列化为类型   'System.Collections.Generic.Dictionary`2 [System.String,System.String]'   因为类型需要一个JSON对象(例如{“name”:“value”})来   正确反序列化。要修复此错误,请将JSON更改为a   JSON对象(例如{“name”:“value”})或将反序列化类型更改为   实现集合接口的数组或类型(例如,   ICollection,IList)就像可以从JSON反序列化的List一样   阵列。 JsonArrayAttribute也可以添加到类型中以强制它   从JSON数组反序列化。

1 个答案:

答案 0 :(得分:1)

实际上很简单,使用:

public class MyClass
{
    public string staticKey1 { get; set; }
    public string staticKey2 { get; set; }
    public IEnumerable<IDictionary<string, string>> results { get; set; }
}

但也许有更好的解决方案。