如何使用jq将一行JSON转换为JSONLINES格式?

问题描述 投票:0回答:1

我正在尝试将一个大的单行 JSON 文件转换为多行 JSONLINES 文件。我尝试了很多命令,但没有一个按照我的预期执行。这是我的数据格式(输入文件:response.json)-

{"_rid":"12345","Documents":[{"id": "id-1", "name": "name-1", "userId": "userid-1", "_rid": "rid-1"},{"id": "id-2", "name": "name-2", "userId": "userid-2", "_rid": "rid-2"},{"id": "id-3", "name": "name-3", "userId": "userid-3", "_rid": "rid-3"},....],"_count":566}

我想去掉不必要的字符,让每条记录都有自己的行。我想删除第一个

_rid
,但不想删除各个记录中的那些。我想要的输出看起来像这样 -

{"id": "id-1", "name": "name-1", "userId": "userid-1", "_rid": "rid-1"}
{"id": "id-2", "name": "name-2", "userId": "userid-2", "_rid": "rid-2"}
{"id": "id-3", "name": "name-3", "userId": "userid-3", "_rid": "rid-3"}
....

这些是我尝试过的一些查询(我知道其中一些行不通,但我很绝望并尝试了很多事情):

jq --slurp '.' response.json > output.jsonl
jq -c '.[]' | jq ."Documents" response.json > output.jsonl
jq '.[] | select("Documents")' response.json > output.jsonl
jq '.[]' | jq 'select("Documents")' response.json > output.jsonl
jq --slurp --compact-output 'map([ . ])' response.json > output.jsonl

如何使用 jq 执行此操作?谢谢!

json jq jsonlines
1个回答
1
投票

快到了

jq -c '.Documents[]' response.json

在线演示

© www.soinside.com 2019 - 2024. All rights reserved.