Come deserializzare una proprietà con un trattino (“-“) nel suo nome con NewtonSoft JsonConvert?

Abbiamo un object JSON con uno degli oggetti con un trattino nel suo nome. Ex sotto.

{ "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" } ] } 

Come possiamo deserializzare questo json?

È ansible ottenere ciò utilizzando 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 Vegetables { get; set; } [DataMember(Name = "non-veg")] public IEnumerable NonVegetables { get; set; } } 

ora puoi deserializzare con qualcosa del genere:

 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); } 

Per rispondere alla domanda su come eseguire questa operazione con NewtonSoft, si utilizzerà il flag di attributo della proprietà JsonProperty.

 [JsonProperty(PropertyName="non-veg")] public string nonVeg { get; set; }