Как получить доступ к значению json в объекте с разными именованными ключами с помощью jq

У меня есть данные, которые выглядят так:

{
  "Object0" : {
    "data01" : "value01",
    "data02" : "value02",
    "data03" : "value03",
    "data04" : "value04"
  },
  "Object1" : {
    "data11" : "value11",
    "data12" : "value12",
    "data13" : "value13",
    "data14" : "value14"
  },
  "variables": {
    "variable1": {
      "isSecret": null,
      "value": "value1"
    },
    "variable2": {
      "isSecret": null,
      "value": "value2"
    },
    "variable3": {
      "isSecret": null,
      "value": "value3"
    },
    "variable4": {
      "isSecret": null,
      "value": "value4"
    }
  }
}

Я пытаюсь получить имена переменных и значения, используя jq. Мне нужен вывод, который связывает их вместе в любой форме структурированных данных. Что-то, что будет выглядеть/функционировать похоже на:

varible1,value1
varible2,value2
varible3,value3
varible4,value4

Это может быть json, csv или tsv. Все, что у вас есть, прекрасно.

Прямо сейчас я могу получить имена переменных только с помощью:

$ cat data.json | jq -r '.variables | keys[]'
variable1
variable2
variable3
variable4

Я также смог начать создавать пары ключ/значение json с помощью:

$ cat data.json | jq -r '{(.variables | keys[]):"42"}'
{
  "variable1": "42"
}
{
  "variable2": "42"
}
{
  "variable3": "42"
}
{
  "variable4": "42"
}

Но я все еще не могу получить доступ к этим сладким значениям.

Я читал справочные страницы и пробовал использовать recurse, walk, foreach, рекурсивный спуск и некоторые другие. Я не понимал, насколько надежен jq! Теперь это одна из моих любимых утилит bash. Но у меня все еще есть эта проблема. Может кто-нибудь пролить некоторый свет на это?

Как сделать HTTP-запрос в Javascript?
Как сделать HTTP-запрос в Javascript?
В JavaScript вы можете сделать HTTP-запрос, используя объект XMLHttpRequest или более новый API fetch. Вот пример для обоих методов:
0
0
39
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Использование to_entries:

jq -r '.variables | to_entries[] | [ .key, .value.value ] | @csv'

Использование keys:

jq -r '.variables | keys[] as $k | [ $k, .[$k].value ] | @csv'

Другие вопросы по теме