#c# #json
#c# #json
Вопрос:
У меня есть следующая Json-структура, преобразованная в JObject:
{
"success": false,
"errors": {
"13": {
"errorCode": "address missing"
},
"4711": {
"year":1395
}
}
}
Я хочу получить значение «ErrorCode». Проблема в том, что дочерним элементом в разделе «ошибки» может быть ЛЮБОЕ число, поэтому я не могу просто использовать
jsonDetail.SelectToken("errors.13.errorCode")
чтобы получить значение в разделе «Код ошибки».
Всегда есть только ОДИН дочерний элемент, содержащий «Код ошибки», но могут быть и дополнительные дочерние элементы (которые я хочу игнорировать)-
Комментарии:
Ответ №1:
Вы можете выполнить поиск по JObject
выражению using SelectToken
и JSONPath https://www.newtonsoft.com/json/help/html/SelectToken.htm
В вашем случае вам просто нужно это
var errorCode = jsonDetail.SelectToken("$..errorCode");
Вы можете найти более подробную информацию о выражениях JSONPath здесь https://goessner.net/articles/JsonPath / (эта ссылка была найдена в собственной документации Newtonsoft)
Из документации по JSONPath вы можете видеть, что $
это для корневого объекта, а ..
это рекурсивный спуск, поэтому это приведет к рекурсивному поиску корневого объекта для дочернего объекта с именем токена errorCode