如何在jq中很好地删除空数组

时间:2014-10-04 17:20:33

标签: json jq

我正在命令行阅读O' Reilly的新数据科学"并使用jq遇到麻烦。我有一些JSON(从NYTimes Articles API返回)我用jq解析如下:

jq -c \
'[.response.docs[] | {date: .pub_date, type: .document_type, title: .headline.main }]' \
< myjsonfile.json

所以,我正在寻找&#34;回复&#34;:&#34; docs&#34; (这是一个数组),然后匹配该数组中的每个项目&#34; pub_type&#34;等,重命名,等等。这很好用,但最后添加了一个空数组:

[{"date":"2009-01-02T00:00:00Z","type":"article","title":"SPARE TIMES: AROUND TOWN"},  
{"date":"2009-01-02T00:00:00Z","type":"article","title":"Catskill Home Prices: How Low Will They Go?"},
{"date":"2009-01-01T00:00:00Z","type":"article","title":"Ominous Cutbacks At Chanel"}]
[] 

如何摆脱空阵列?我现在的解决方案是将输出管道输回到jq,但这感觉真的不是最理想的。所以这有效:

jq -c \
'[.response.docs[] | {date: .pub_date, type: .document_type, title: .headline.main }]' | \
< myjsonfile.json | 
jq 'if length > 0 then . else empty end'

但那感觉很难看。有没有更好的方法呢?

1 个答案:

答案 0 :(得分:18)

使用长度为&gt;的select过滤器0

select(length > 0)