2013-02-07 14 views
14

Adında bir tire olan bir nesneye sahip bir JSON nesnesine sahibiz. Aşağıda.Bir özellik ("-") NewtonSoft JsonConvert ile adında bir çizgi ile nasıl seri hale getirilir?

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

Bu json'u nasıl deserialize edebiliriz?

+0

Yinelenen değil. Bu soru, belirli ve ayrı bir problemi çözmeye çalışıyor. Bu arada bir tane vardı, ben de buna yatırım yapıyorum. – MrBoJangles

cevap

16

Artık

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

Böyle bir şeyle serisini DataContractJsonSerializer

kullanarak bunu başarabilirsiniz:

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

teşekkürler ... Bu – robert

+0

'u deneyelim. 'DataMember'i sadece tire içeren özellik için tanımlayabilir ve geri kalanını olduğu gibi bırakabilir miyim? –

+0

DataMember'i serileştirilmek istediğiniz her özelliğe eklemeniz gerekir, ancak mülkün adı yeterince iyi olup olmadığını belirtmeyebilirsiniz. –

37

NewtonSoft İLE bu nasıl yapılacağına ilişkin soruya cevap vermek için kullanırsınız JsonProperty özellik özniteliği bayrağı.

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

VB kullanımı için:

İlgili konular