将 JSON 文件转换为将每组大括号放在一行中

Convert JSON file to have each set of curly brackets on a single line

我有一个像这样的简单 JSON 文件:

{
  "user_id": 123,
  "value": 99
},
{
  "user_id": 122,
  "value": 100
}

但我需要它看起来像这样:

{"user_id": 123, "value": 99}
{"user_id": 122, "value": 100}

基本上每一组大括号都应该独占一行。我希望 jq 会很简单,但我对它很陌生。提前谢谢你。

如果去掉两个对象之间的逗号(肯定是无效的JSON),那么就用jq的--compact-output(或-c)选项和identity filter ..

jq --compact-output '.'
{"user_id":123,"value":99}
{"user_id":122,"value":100}

Demo

jq 可用于将输入(作为原始文本)包装在 [...] 内,结果可由其内置 fromjson 过滤器解析。再次将生成的数组拆分为单独的对象,并使用 -c 在一行上输出每个对象。

$ cat old.txt
{
  "user_id": 123,
  "value": 99
},
{
  "user_id": 122,
  "value": 100
} 
$ jq -csR '"[\(.)]" | fromjson |.[]' old.txt
{"user_id":123,"value":99}
{"user_id":122,"value":100}