如果您运行下面的代码,您将看到,我只得到数组中的第一项,错误是不能遍历null。如果 .in 或 .in.id 为null,我似乎不知道如何允许该区域为null。使用 ? 使错误消失,但它仍然只是第一项
.in
.in.id
?
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)
上云精选
2核2G云服务器 每月9.33元起,还有更多云产品低至0.02元
错误抑制操作符在发生错误时返回特殊值 empty 。 empty 不是结果的一部分。但是,您可以使用 // alternative operator 提供另一个值。
empty
//
.[] | {section:.a, area_or_null:(.in[]?.id//null)}
输出:
{ "section": 1,