我有这个JSON:
{
"connections": [
{
"resourceName": "user_1",
"etag": "etag_value_1",
"emailAddresses": [
{
"metadata": {
"primary": true,
"source": {
"type": "CONTACT",
"id": "id_1"
}
},
"value": "email_1",
"type": "home"
}
]
},
{
"resourceName": "user_2",
"etag": "etag_value_2",
"emailAddresses": [
{
"metadata": {
"primary": true,
"source": {
"type": "CONTACT",
"id": "id_2"
}
},
"value": "email_2",
"type": "home"
}
]
}
]
}
我想显示如下内容:
{
"resourceName": "user_1",
"etag": "etag_value_1",
"value": "email_1"
}
我正在玩类似的游戏,但是不起作用:
jq '.connections[].emailAddresses[] | {.resourceName, .etag, .value}' test.json
我该如何使用JQ二进制文件?
答案 0 :(得分:1)
您的路径表达式错误,resourceName
和etag
字段出现在connections
数组内部的顶级路径中,而value
字段位于{ {1}}数组。
由于要形成对象,请将字段包裹在emailAddresses
{..}
如果仅在寻找第一个对象,请对所有对象执行.connections[] | { resourceName, etag } + ( .emailAddresses[] | { value } )
或如上。