Проблема
Я хотел бы распаковать объект в массив объектов, повторяя ключ верхнего уровня вместе со значениями из вложенного массива. Это кажется достаточно тривиальным, но ни одно из руководств или примеров на jmespath.org не касается этого случая.
Входные данные
{
"name": "ryan",
"pets": [
"charlie",
"michael",
"snorlax",
"socrates",
"apollo"
]
}
Желаемый результат
[
{
"owner": "ryan",
"pet_name": "charlie"
},
{
"owner": "ryan",
"pet_name": "michael"
},
{
"owner": "ryan",
"pet_name": "snorlax"
},
{
"owner": "ryan",
"pet_name": "socrates"
},
{
"owner": "ryan",
"pet_name": "apollo"
}
]
Попытки решения
Это генерирует несколько объектов, но я не понимаю, как взять с собой ключ owner
для поездки:
$ jp -f test.json 'pets[].{owner: name, pet: @}'
[
{
"owner": null,
"pet": "charlie"
},
{
"owner": null,
"pet": "michael"
},
{
"owner": null,
"pet": "snorlax"
},
{
"owner": null,
"pet": "socrates"
},
{
"owner": null,
"pet": "apollo"
}
]
Это дает нужную информацию, но не создает несколько объектов:
$ jp -f test.json '[{owner: name, pet_name: pets[] }]'
[
{
"owner": "ryan",
"pet_name": [
"charlie",
"michael",
"snorlax",
"socrates",
"apollo"
]
}
]