如何使用jq将JSON对象流转换为数组

Qia*_* Li 17 json jq

我想用来jq将json对象流放入json数组中,例如,来自

{"a":1}
{"b":2}
Run Code Online (Sandbox Code Playgroud)

[{"a":1},
{"b":2}]
Run Code Online (Sandbox Code Playgroud)

但这不起作用

echo '
{"a":1}
{"b":2}
'|jq '[.]'
Run Code Online (Sandbox Code Playgroud)

自从我得到了

[
  {
    "a": 1
  }
]
[
  {
    "b": 2
  }
]
Run Code Online (Sandbox Code Playgroud)

Jef*_*ado 26

使用该-s选项来填充它.

$ jq -s '.' <<< '{ "a": 1 } { "b": 2 }'
[
  {
    "a": 1
  },
  {
    "b": 2
  }
]
Run Code Online (Sandbox Code Playgroud)

作为另一种选择,使用读取值inputs是一种更灵活的替代方案.您通常希望将此-n选项与选项结合使用,以防止第一个值过早消耗.

$ jq -n '[inputs]' <<< '{ "a": 1 } { "b": 2 }'
Run Code Online (Sandbox Code Playgroud)

  • @towi,你可以“展平”输入的“jq -s '展平'”。或者更好的是,迭代每个输入 `jq -n '[inputs[]]'` (2认同)