我正在阅读O'Reilly的新文章《命令行中的数据科学》,并且在使用jq时遇到了麻烦。我有一些JSON(从NYTimes Articles API返回),我正在用jq进行解析,如下所示:
jq -c \
'[.response.docs[] | {date: .pub_date, type: .document_type, title: .headline.main }]' \
< myjsonfile.json
因此,我正在寻找“ response”:“ docs”(这是一个数组),然后将该数组中的每个项目与“ pub_type”等进行匹配,将其重命名,依此类推。这很好用,但是在末尾添加了一个空数组:
[{"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'
但这感觉很难看。有更好的方法吗?
使用select
长度> 0的过滤器。
select(length > 0)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句