У меня есть содержимое 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)





Предполагая, что ввод был исправлен:
$ jq -r 'keys_unsorted[]' t1.json
Id
Result
Other
Причина, по которой jq --arg id 0 '.[$id]' t1.json не работает, заключается в том, что вы указали $id как строку JSON.
Самый простой способ передать целочисленный аргумент — использовать --argjson вместо --arg. Одной из многих альтернатив было бы использование $id|tonumber вместо $id.
Для начала это недопустимый JSON: массив не закрыт и отсутствует запятая. Возможно, вы ищете
keys?