我们有一个JSON对象,其中一个对象的名称中带有短划线。例如下面。
{ "veg": [ { "id": "3", "name": "Vegetables", "count": "25" }, { "id": "4", "name": "Dal", "count": "2" }, { "id": "5", "name": "Rice", "count": "8" }, { "id": "7", "name": "Breads", "count": "6" }, { "id": "9", "name": "Meals", "count": "3" }, { "id": "46", "name": "Extras", "count": "10" } ], "non-veg": [ { "id": "25", "name": "Starters", "count": "9" }, { "id": "30", "name": "Gravies", "count": "13" }, { "id": "50", "name": "Rice", "count": "4" } ] }
我们如何反序列化此json?
您可以使用DataContractJsonSerializer实现此目的
[DataContract] public class Item { [DataMember(Name = "id")] public int Id { get; set; } [DataMember(Name = "name")] public string Name { get; set; } [DataMember(Name = "count")] public int Count { get; set; } } [DataContract] public class ItemCollection { [DataMember(Name = "veg")] public IEnumerable<Item> Vegetables { get; set; } [DataMember(Name = "non-veg")] public IEnumerable<Item> NonVegetables { get; set; } }
现在您可以使用以下方式反序列化它:
string data; // fill the json in data variable ItemCollection collection; using (MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(data))) { DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(ItemCollection)); collection = (ItemCollection)serializer.ReadObject(ms); }