Задать вопрос
@algrandeth

Как прочитать дважды вложенный обьект в JArray?

Добрый день. Глупый вопрос, но чет совсем не получается по непонятной мне причине.

Есть следующая структура JSON:
{
  "data": {
    "coin": {
      "id": 0,
      "type": null,
      "symbol": "BIP"
    },
    "to": "zxc",
    "value": "1.000000000000000000"
  }
}

Как прочитать symbol?
Я читал так:

var result = minterResponse.Select(a => new
{
      coin = a["data"]["coin"]["symbol"],
}).ToList();

или

var result = minterResponse.Select(a => new
{
      coin = a["data"]["coin"].Select(a => (string)a["symbol"]),
}).ToList();

Но оба варианта вызывает ошибку
fail: zxc.Program[0]
      System.ArgumentException: Cannot access child value on Newtonsoft.Json.Linq.JProperty

Все остальное я без проблем прочитал, не получается именно прочитать поля обьекта в обьекте.
  • Вопрос задан
  • 198 просмотров
Подписаться 1 Простой 3 комментария
Пригласить эксперта
Ответы на вопрос 1
BasiC2k
@BasiC2k
.NET developer (open to job offers)
Если использовать библиотеку Newtonsoft.Json, то можно выполнить задачу так:
JObject obj = JObject.Parse(json_txt); // Перегоняем строковый json в JObject
string val = obj.SelectToken("data.symbol").ToString(); // Определяем значение в ветке data - symbol

Не получалось у Вас, потому что в Вашем json нет JArray (массивов)
Для представления данных в newtosoft.json.linq используется абстрактный класс JToken, от которого наследуются классы JValue (для представления простых значений) и JContainer (для представления структур). Структуры в свою очередь могут представлять из себя JArray (массив), JConstructor (конструктор), JObject (объект), либо JProperty (свойство).


Подробнее можно почитать здесь: https://habr.com/ru/post/481514/
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы