Создать новое JSON значение из строк, извлеченных из другого - PullRequest
0 голосов
/ 25 мая 2020

У меня есть файл json со следующим вводом

{
  "Arg":"room=Rhasspy rhasspyName",
  "Results": [
  {
    "Name":"TV",
    "Internals": { },
    "Readings": { },
    "Attributes": {      "rhasspyName": "TV" }
  },
  {
    "Name":"dyTest01",
    "Internals": { },
    "Readings": { },
    "Attributes": {      "rhasspyName": "radio" }
  },
  {
    "Name":"enoAcPC01",
    "Internals": { },
    "Readings": { },
    "Attributes": {      "rhasspyName": "pc" }
  }  ],
  "totalResultsReturned":3
}

С jq '.Results | .[] | .["Attributes"] | .rhasspyName' -r я могу получить список вроде

TV
radio
pc

Как я могу взять этот ввод и создать новый json выглядит как

{"Devices":["TV","radio","pc"]}

1 Ответ

0 голосов
/ 25 мая 2020

Поместите их в массив и объедините его с ключом Devices в объекте.

$ jq '{Devices:[.Results[].Attributes.rhasspyName]}' file
{
  "Devices": [
    "TV",
    "radio",
    "pc"
  ]
}

Чтобы создать новый файл с этим значением JSON, перенаправьте стандартный вывод JQ в файл, например:

jq '{Devices:[.Results[].Attributes.rhasspyName]}' file > newfile
...