Не могу использовать JQ для получения предметов в JSON - PullRequest
0 голосов
/ 14 января 2019

У меня есть этот JSON:

{  
  "blocks" : {
    "xrb_1111111111111111111111111111111111111111111111111117353trpda": {    
        "142A538F36833D1CC78B94E11C766F75818F8B940771335C6C1B8AB880C5BB1D": "6000000000000000000000000000000"    
    },    
    "xrb_3t6k35gi95xu6tergt6p69ck76ogmitsa8mnijtpxm9fkcm736xtoncuohr3": {    
        "4C1FEEF0BEA7F50BE35489A1233FE002B212DEA554B55B1B470D78BD8F210C74": "106370018000000000000000000000000"    
    }  
}

У меня проблемы с использованием jq в bash для чтения:

xrb_1111111111111111111111111111111111111111111111111117353trpda
xrb_3t6k35gi95xu6tergt6p69ck76ogmitsa8mnijtpxm9fkcm736xtoncuohr3

Я пытаюсь сделать это на jqplay , но мне не везет с этим.

Я пытался с помощью jqplay , чтобы получить результаты и управлять поиском, но не тогда, когда он вложен таким образом.

Ответы [ 3 ]

0 голосов
/ 14 января 2019

keys_unsorted дает массив ключей. Откуда:

jq -r '.blocks | keys_unsorted[]' input.json
xrb_1111111111111111111111111111111111111111111111111117353trpda
xrb_3t6k35gi95xu6tergt6p69ck76ogmitsa8mnijtpxm9fkcm736xtoncuohr3
0 голосов
/ 16 января 2019

Прежде всего, ваш JSON недействителен. Отсутствует закрывающая скобка.

$ cat input.json
{
  "blocks": {
    "xrb_1111111111111111111111111111111111111111111111111117353trpda": {
      "142A538F36833D1CC78B94E11C766F75818F8B940771335C6C1B8AB880C5BB1D": "6000000000000000000000000000000"
    },
    "xrb_3t6k35gi95xu6tergt6p69ck76ogmitsa8mnijtpxm9fkcm736xtoncuohr3": {
      "4C1FEEF0BEA7F50BE35489A1233FE002B212DEA554B55B1B470D78BD8F210C74": "106370018000000000000000000000000"
    }
  }
}

Если вы готовы использовать что-то, кроме jq, то я бы предложил швейцарский нож Xidel .

Точечная запись:

$ xidel -s input.json -e '($json).blocks()'

Обозначение XPath:

$ xidel -s input.json -e '$json/(blocks)()'

Оба с выводом:

xrb_1111111111111111111111111111111111111111111111111117353trpda
xrb_3t6k35gi95xu6tergt6p69ck76ogmitsa8mnijtpxm9fkcm736xtoncuohr3
0 голосов
/ 14 января 2019

Этот скрипт jq может работать для вас:

$ cat file
{
  "blocks": {
    "foo_b": {
      "aaa": "bbb"
    },
    "bar_b": {
      "ccc": "ddd"
    }
  }
}

$ jq -r '.blocks | to_entries[].key' file
foo_b
bar_b
...