我正在命令行阅读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'
但那感觉很难看。有没有更好的方法呢?
答案 0 :(得分:18)
使用长度为&gt;的select
过滤器0
select(length > 0)