如果您运行下面的代码,您将看到,我只得到数组中的第一项,错误是不能遍历null。如果.in
或.in.id
为null,我似乎不知道如何允许该区域为null。使用?
使错误消失,但它仍然只是第一项
echo '[{"a":1, "in": [{"id":2}] },{"a":4}]' | jq '.[] | {section:.a, area_or_null:.in[].id}'
{
"id": 1,
"id_or_null": 2
}
jq: error (at <stdin>:1): Cannot iterate over null (null)
发布于 2022-10-08 05:08:41
错误抑制操作符在发生错误时返回特殊值empty
。empty
不是结果的一部分。但是,您可以使用//
alternative operator提供另一个值。
.[] | {section:.a, area_or_null:(.in[]?.id//null)}
输出:
{
"section": 1,
"area_or_null": 2
}
{
"section": 4,
"area_or_null": null
}
https://stackoverflow.com/questions/73994331
复制相似问题