Как перебрать JSON-контент, используя jq в bash - PullRequest
0 голосов
/ 07 июля 2019

У меня есть содержимое json, как показано ниже,

{
"Id": "Role1",
"Result": [
    {
        "Sub1": 1,
        "Sub2": 1,
        "StrSub": "ABC"
    },
    {
        "Sub1": 2,
        "Sub2": 1,
        "StrSub": "CDE"
    } ],
"Other": "NA"
}

Я пытаюсь напечатать, как показано ниже,

Id
Result
Others

Я мог бы получить длину, используя jq length t1.json, но с длиной, которую я пытаюсь перебрать в файле json, используя --arg index 0 внутри цикла for, он не работает (jq --arg id 0 '.[$id]' t1.json)

1 Ответ

2 голосов
/ 07 июля 2019

Предполагается, что ввод был исправлен:

$ jq -r 'keys_unsorted[]' t1.json
Id
Result
Other

Причина, по которой jq --arg id 0 '.[$id]' t1.json не работает, заключается в том, что вы указали $id в качестве строки JSON.

Простейшийспособ передать целочисленный аргумент - использовать --argjson вместо --arg.Одной из многих альтернатив будет использование $id|tonumber вместо $id.

...