Объединение и сортировка JSON массивов - PullRequest
1 голос
/ 05 апреля 2020

У меня проблема с JQ. Из API я получил следующие данные:

{
  "items": [4,5,1,3,2],
  "objectNumbers": [
     {
        "type": "objectNumber",
        "number": 8
     },
     {
        "type": "objectNumber",
        "number": 7
     },
     {
        "type": "objectNumber",
        "number": 10
     },
     {
        "type": "objectNumber",
        "number": 6
     },
     {
        "type": "objectNumber",
        "number": 9
     }
  ]
}

Используя jq, я хочу создать новые объекты из массива элементов, объединить его с объектными номерами и отсортировать по номеру. В данный момент у меня есть новые объекты из предметов:

jq '.items[] | {type: "itemNumber", number: .}'

, но я не знаю, как я могу объединить его с объектными номерами. Наконец, я хочу следующую структуру:

...
     {
        "type": "itemNumber",
        "number": 4
     },
     {
        "type": "itemNumber",
        "number": 5
     },
     {
        "type": "objectNumber",
        "number": 6
     },
     {
        "type": "objectNumber",
        "number": 7
     },
...

1 Ответ

2 голосов
/ 05 апреля 2020

Вы были близки. Просто поместите продукты вашего скрипта в массив, добавьте его в objectNumbers и сортируйте по полю number. Например:

[.items[] | {type: "itemNumber", number: .}] + .objectNumbers
| sort_by(.number)

Онлайн-демонстрация

...