【发布时间】:2020-09-16 08:14:12
【问题描述】:
我正在尝试解析我使用 curl 接收到的大 json 文件。
通过关注this answer 我可以解析下一个文件:
$ cat test.json
{"items": [{"id": 110, "date1": 1590590723, "date2": 1590110000, "name": "somename"}]}
使用下一个命令:
TZ=Europe/Kyiv jq -r '.[] | .[] | .name + "; " + (.date1|strftime("%B %d %Y %I:%M%p")) + "; " + (.date2|strftime("%B %d %Y %I:%M%p"))' test.json
输出是:
somename; May 27 2020 02:45PM; May 22 2020 01:13AM
但是当我尝试使用相同的命令解析下一个文件时:
$ cat test2.json
{"items": [{"id": 110, "date1": 1590590723, "date2": null, "name": "somename"}]}
输出是:
jq: error (at test2.json:1): strftime/1 requires parsed datetime inputs
我可以在解析之前使用sed 将这些空值替换为一些有效值。但也许有更好的方法来跳过(忽略)这些值,在输出中留下空值:
somename; May 27 2020 02:45PM; null
【问题讨论】:
标签: bash jq unix-timestamp strftime