не могу пройти 3-й уровень json с помощью запроса jq - PullRequest
0 голосов
/ 12 февраля 2020

это фрагмент json. я пытаюсь получить значение:

[данные] [всеБлоки] [ребра] [узел] [дата] [эпоха] [последнийБлок] [идентификатор]

используя jq из командной строки. я могу запросить до [ребер], но по какой-то причине я не могу получить данные для [узлов] или чего-либо еще после этого.

jq .data.allBlocks.edges настолько далеко, насколько я могу получить дерево. Я посмотрел на руководство JQ, и я действительно не понимаю параметры запроса. ничего, что я ставлю после краев, не приводит к какому-либо выводу, это всегда какая-то ошибка.

Formatted JSON Data
{ 
   "data":{ 
      "allBlocks":{ 
         "pageInfo":{ 
            "hasNextPage":false,
            "hasPreviousPage":true,
            "startCursor":"190519",
            "endCursor":"190521"
         },
         "totalCount":"190522",
         "edges":[ 
            { 
               "node":{ 
                  "id":"27921be509a1336ceaa164cee00cda91c2719a1c0148239433e233ae1bb09c9b",
                  "date":{ 
                     "slot":"16338",
                     "epoch":{ 
                        "id":"60",
                        "firstBlock":{ 
                           "id":"917927a503ed3d9be307dd18f27680c11cb0c405a834c316e3920c7ed8b4e2e8"
                        },
                        "lastBlock":{ 
                           "id":"27ee50d49eacef10d9ccbfd3c29d09a1aea8268901776085c835ba34f607185b"
                        },
                        "totalBlocks":"1475"
                     }
                  },

1 Ответ

1 голос
/ 12 февраля 2020

.edges - это массив, поэтому, используя ваш подход, вы должны принять это во внимание, например, написав:

.data.allBlocks.edges[].node.date.epoch.lastBlock.id

Еще одна из многих альтернатив, которые вы могли бы рассмотреть, если бы sh использовать .., например:

.. | try (.lastBlock.id) // empty

или:

.. | objects | .lastBlock.id // empty
...