2011-04-10 26 views
10

Tengo una situación en la que obtendré algunos valores conocidos de una API en json, pero luego necesito obtener un conjunto de valores desconocidos (por ejemplo, la contraseña y el error de correo electrónico en este json):Obtener valores de Json.net

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

Sé que siempre obtendré 'error' y 'message.errors'. No sé de antemano cuáles serán los tokens/propiedades (contraseña, correo electrónico)

Estoy tratando de usar Json.net para obtenerlos, y solo escribo en un constructor de cadenas: "la contraseña es demasiado corta , el correo electrónico no es válido"

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

ese código me da root.Properties, pero estoy haciendo algo mal, ya que no consigo propiedades fuera de él de los niños. ¿Qué no consigo?

Gracias,

Respuesta

13

Muy bien puede haber una mejor manera de hacer esto, pero el siguiente código trabajado para mí para extraer la clave y el valor de los pares de claves dentro de los errores matriz:

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

agradecimiento tu, gracias. – Roger