2014-02-23 89 views
5

在json.net,我怎麼可以反序列化這個JSON:反序列化Json的物業的地產物業

{ 
    "items": { 
     "count": 1, 
     "data": [ 
      { 
       ... 
      }, 
      ... 
     ], 
    } 
} 

至本C#類:

class MyData 
{ 
    [JsonProperty("items/data")] // this doesn't work 
    public List<object> Items { get; set; } 
} 

-

// Then this doesn't populate Items 
MyData data = JsonConvert.DeserializeObject<MyData>(json); 

有一個用json.net做這件事的優雅方式?

+0

Json.NET需要爲每個JSON對象/「級別」獲取相應的POCO才能獲得強類型的反序列化.. *或*使用[Custom JsonConverter](http://james.newtonking.com/) JSON /幫助/ HTML/CustomJsonConverter.htm)。 – user2864740

回答

1

我只是想我怎麼能做到這一點:

var jObject = JObject.Parse(json); 
jObject["items"] = jObject["items"]["data"]; 

MyData data = JsonConvert.DeserializeObject<MyData>(jObject.ToString()); 

任何人都有一個解決方案更好

0

對於填入項目,你應該有這個

public class Datum 
{ 
} 

public class Items 
{ 
    public int count { get; set; } 
    public List<Datum> data { get; set; } 
} 

public class RootObject 
{ 
    public Items items { get; set; } 
} 

,然後使用此:

MyData data = JsonConvert.DeserializeObject<RootObject>(json); 
+0

是的,我可以做到這一點,但「計數」信息毫無用處。我不想要它。我無法控制JSON。 –