2011-04-10 19 views
10

Json'daki bir api'den bilinen bazı değerleri alacağım bir durum var, ancak bir dizi bilinmeyen değere (örneğin, bu jsondaki parola ve e-posta hatası) ulaşmanız gerekir:Değerleri alma Json.net'den

{"error":{"httpCode":400,"message":"Invalid parameters"}, "message":{"errors": 
    {"password":"is too short" 
    ,"email":"is invalid"}}} 

Ben her zaman 'hatası' ve 'message.errors' alacak biliyorum. Önceden bilmiyorum ne jetonlar/özellikleri olacak (şifre, e-posta)

Ben onlara ulaşmak için Json.net kullanmaya çalışıyorum ve sadece bir dize oluşturucuya yazmak: "şifre çok kısa , e-posta

JObject root = JObject.Parse(<json string>); 

bu kod bana root.Properties veriyor "geçersiz, ama çocuklarından uzakta özelliklerini alamadım gibi ben yanlış bir şey yapıyorum. Ne alamıyorum

sayesinde

cevap

13

de vardır bunu yapmak için daha iyi bir yol olabilir, ancak aşağıdaki kod hataları dizi içindeki anahtar çiftlerinin anahtarı ve değerini ayıklamak için benim için çalıştı olabilir:

string data = 
    @"{""error"":{""httpCode"":400,""message"":""Invalid parameters""}, ""message"":{""errors"": 
    {""password"":""is too short"" 
    ,""email"":""is invalid""}}}"; 

JObject jObject = JObject.Parse(data); 

JObject errors = (JObject)jObject["message"]["errors"]; 

foreach(var error in errors) 
{ 
    MessageBox.Show(p.Key + p.Value);     
} 
+0

teşekkür teşekkür ederim – Roger