使用 JQ 将对象数组转换为对象列表

Using JQ to convert an array of object to list of objects

假设我有以下 JSON

[
 {
  name : "A",
  value : "1"
 },
 {
  name : "B",
  value : "5"
 },
 {
  name : "E",
  value : "8"
 }
]

我只想成为

 {
  name : "A",
  value : "1"
 },
 {
  name : "B",
  value : "5"
 },
 {
  name : "E",
  value : "8"
 }

我使用了 jq 普通过滤器,所以 jq'.[]',但是我得到了一个由 return 分隔的对象列表:

 {
  name : "A",
  value : "1"
 }
 {
  name : "B",
  value : "5"
 }
 {
  name : "E",
  value : "8"
 }

请注意,对象之间的逗号神奇地消失了。仅当对象按名称索引时,使用 reduce 才有效,比方说,我使用了以下内容:

jq 'reduce .[] as $i ({}; .[$i.name] = $i)'

有人 运行 遇到过类似情况吗?

如图所示的输入和所需的输出都不是有效的 JSON 或 JSON 流,所以这个问题似乎有问题,因此提供以下答复,但要注意他们可能应该避免。

还应注意,除了 sed-only 方法外,此处提供的解决方案会生成逗号分隔的 JSON,这可能不是所需的。

他们假设准JSON输入在文件qjson.txt.

  1. 仅 sed
    < qjson.txt sed -e '1d;$d; s/^ //'
  1. hjson、jq 和 sed
   < qjson.txt hjson -j | jq -r '.[] | (.,",")' | sed '$d'
  1. hjson 和 jq
    < qjson.txt hjson -j | jq -r '
        foreach .[] as $x (-1; .+1; 
          if . == 0 then $x else ",", $x end)'