【发布时间】:2019-10-18 15:43:47
【问题描述】:
我有一个深度嵌套的对象数组,我试图从中提取键和值的子集。
[
{
"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 以及其他一些字段,但我遇到的问题是它似乎正在组合 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 数组中的每个对象进行一次处理?
【问题讨论】: