У меня есть глубоко вложенный массив объектов, из которого я пытаюсь получить подмножество ключей и значений.
[
{
"x": {
"y": {
"description": "jq rocks",
"z": [
{
"data_1": 123,
"data_2": [
{
"field_1": true,
"field_2": "hello",
"field_3": "red"
}
]
},
{
"data_1": 123,
"data_2": [
{
"field_1": true,
"field_2": "goodbye",
"field_3": "blue"
}
]
},
{
"data_1": 123
}
]
}
}
}
]
Я пытаюсь извлечь field_2 и field_3, а также некоторые другие поля, но проблема IЯ сталкиваюсь с тем, что он, кажется, объединяет все возможные комбинации field_2 и field_3.
jq, который я сейчас использую:
jq '.[] | {
"description": .x.y.description,
"subset": [{
"f_2": .x.y.z[].data_2[]?.field_2,
"f_3": .x.y.z[].data_2[]?.field_3
}]
}' tmp.json
При использовании приведенного выше примера он возвращает 4 записив массиве вместо двух.
"subset": [
{
"f_2": "hello"
"f_3": "red"
}
{
"f_2": "hello"
"f_3": "blue"
}
{
"f_2": "goodbye"
"f_3": "red"
}
{
"f_2": "goodbye"
"f_3": "blue"
}
]
Как заставить jq обработать каждый объект в массиве data_2 один раз?