Получение значений из Json.net

#json.net

#json.net

Вопрос:

У меня ситуация, когда я получу некоторые известные значения из api в формате json, но затем мне нужно будет получить набор неизвестных значений (например, ошибка пароля и электронной почты в этом json):

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

Я знаю, что всегда буду получать ‘error’ и ‘message.errors’. Я не знаю заранее, какими будут токены / свойства (пароль, электронная почта)

Я пытаюсь использовать Json.net чтобы получить к ним доступ, просто напишите в конструктор строк: «пароль слишком короткий, адрес электронной почты недействителен»

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

этот код дает мне root.Свойства, но я делаю что-то неправильно, поскольку я не получаю свойства от его дочерних элементов. Чего я не получаю?

Спасибо,

Ответ №1:

Вполне может быть лучший способ сделать это, но следующий код сработал для меня, чтобы извлечь ключ и значение пар ключей из массива ошибок:

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