我有包含 N 个 JSON 对象的文件,它们之间用逗号 (,) 分隔
{"a":1},{"b":2},{"c":3},{"d":2},{"e":1},{"f":2} ...
我想使用 jq
将它们转换为一个包含 N 个对象的 JSON 数组
[{"a":1},{"b":2},{"c":3},{"d":2},{"e":1},{"f":2} ...]
我尝试了 jq -R 'split(",")' myfile.json
但它给了我一个包含 N 个字符串的数组
[
"{\"a\":1}",
"{\"b\":2}",
"{\"a\":1}",
"{\"b\":2}",
"{\"a\":1}",
"{\"b\":2}",
"{\"a\":1}",
"{\"b\":2}" ....
]
有什么想法吗?
最佳答案
您的方向是正确的,您只需将 fromjson
映射到数组,例如:
jq -Rc 'split(",") | map(fromjson)' myfile.json
输出:
[{"a":1},{"b":2},{"c":3},{"d":2},{"e":1},{"f":2}]
但是,如果您正在处理巨大的输入,也许可以使用更可流化的命令将输入分割成 block ,例如与tr
:
<myfile.json tr ',' '\n' | jq -c .
输出:
{"a":1}
{"b":2}
{"c":3}
{"d":2}
{"e":1}
{"f":2}
关于json - jq 将逗号分隔的 JSON 对象转换为数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49645325/