json - jq 将逗号分隔的 JSON 对象转换为数组

标签 json object jq

我有包含 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/

相关文章:

android - 在 Android 中解析 JSON 对象

php - 将数组作为数组而不是 PHP 中的 JSON 传递给 javascript

javascript - 展平对象中的多个嵌套数组

Javascript:onclick函数获取元素

json - jq 转换 - json 子数组到分隔字符串

bash - 如何在ubuntu中回显斜线

ruby-on-rails - 你如何在 JBuilder 中渲染散列值的部分?

javascript - 解析具有重复键的嵌套 JSON 对象(PHP 或 JS)

javascript - React 使用对象值作为状态变量名称

json - 使用 jq 有条件地修改对象属性