【发布时间】:2023-01-03 03:46:18
【问题描述】:
新手jq嵌套字段问题。
我有以下file.json
{
"Name": [
{
"key1": "value1",
"key2": [
{
"sub-key1": false,
"sub-key-2": "val2",
"Id": "049f2fa1",
"Health": "Good"
},
{
"sub-key1": false,
"sub-key-2": "val23",
"Id": "049f2c34",
"Health": "Bad"
}
],
"key3": 2
}
]
}
我正在尝试为具有特定 id 的数组元素提取字段“健康”的值
试过这个
cat file.json | jq '.Name[].key2[] | select(.Id=="049f2c34") | .Health'
但是我得到的不是Bad,而是空的(这个问题与.Name[].key2[]有关,我也试过.Name[].key2)
【问题讨论】:
-
您的 json 无效。如果我运行你的命令,我会收到一条错误消息
parse error: Expected another key-value pair at line 11, column 17。所以删除}(两次)之前的逗号和开头的{ -
@jens 对,但这是我的输入文件(我不控制输入数据)。在使用 jq 之前我必须在它周围添加 {} 吗?
-
它必须是一个有效的 json
-
输入无效的 JSON,它在嵌套对象中有尾随逗号。 jq 只能处理 JSON,不能“看起来像 JSON”。如果输入固定为正确的 JSON,则您的 jq 程序会运行并生成“Bad”作为输出。