2016-04-12 18 views
1
dynamic js = JObject.Parse(App.payCommand.Value); 
Debug.WriteLine((string)js.Value[0].DisplayName); 

App.payCommand.Value sadece JObject için ayrıştırdığım bir dizedir.Json Select Çocuk Alanı C#

Yukarıda gördüğünüz gibi DisplayName ayıklamayı denedim, ancak bunu yapmaya çalışırken bir hata alıyorum. Ben şu sonucu elde Bütün json dize çıktısını Eğer

:

{ 

"Type": "SecondScreen", 

"Value": ["\"DisplayName\":\"Zingo\",\"BarCode\":\"54352164895\",\"Price\":5,\"Discount\":0}" 
    ] 

} 

nasıl ki, bu durumda, sadece "Zingo" olsun DisplayName ayıklamak?

+2

gibi değerleri alabilirsiniz gerçekten JSON mi? Çünkü 'Değer' tek bir literal değeri olan * bir dizi * içerir:' 'DisplayName ':" Zingo "," BarCode ":" 54352164895 "," Fiyat ": 5," İndirim ": 0}' – poke

+0

Hmm Sanırım Ne demek istediğini anla ama sonra nasıl çözerim? Bir JSON Nesnesi olsaydı yukarıdaki çözümüm işe yarıyor mu? Daha sonra alanları ayıklayabilmek için JSON nesnesini nasıl yapabilirim? – Nysithea

+0

Uygun bir JSON nesnesi varsa (yani, bir dizenin yerine yuvalanmış bir nesneye sahipse), ifadeniz işe yaramış olur. JSON'un kaynağını düzeltmelisiniz, böylece uygun JSON üretir. – poke

cevap

0

sizin json biçimi aşağıdaki gibi olmalıdır Diyelim:

{ 

"Type": "SecondScreen", 

"Value":[{"DisplayName":"Zingo","BarCode":"54352164895","Price":5,"Discount":0 }] 

} 

Sonra

dynamic x = JsonConvert.DeserializeObject(App.payCommand.Value); 
var displayName = x.Value[0].DisplayName;