【问题标题】:append json array using jq [duplicate]使用jq追加json数组[重复]
【发布时间】:2022-01-18 12:53:14
【问题描述】:

我有一个从 consul 获取的 json 文件,结果非常简单:

[ { "name" : Jon", "class" : "senior" } ]

我想用下面的 json 更新数组:

{ "name" : santa", "class" : "christmas" }

输出应该是:

[ { "name" : Jon", "class" : "senior" }, { "name" : santa", "class" : "christmas" } ]

这看起来很简单,但我到现在都做不到。

这就是我一直在尝试的jq

JSON=[{ "name" : Jon", "class" : "senior" }]

echo $JSON | jq '.[] += { "new_key" : "new_value" }'

我在 stackoverflow 上关注了一些答案,但其中大部分都是关于添加单个元素的。

【问题讨论】:

    标签: bash shell jq


    【解决方案1】:

    此问题可能与Add new element to existing JSON array with jq 重复。

    无论如何,作为一种快捷方式,您可以在不通过管道传输源 JSON 数组的情况下做到这一点:

    JSON='[{"name": "Jon", "class": "senior"}]'
    jq --null-input --argjson  a "$JSON" '$a  + [{"name" : "santa", "class" : "christmas" }]'
    

    【讨论】:

      【解决方案2】:

      您的脚本存在几个问题。一般来说,这应该可以工作(但在某些层面上仍需要改进):

      JSON='[{"name": "Jon", "class": "senior"}]'
      echo "$JSON" | jq '. += [{"new_key": "new_value"}]'
      
      [
        {
          "name": "Jon",
          "class": "senior"
        },
        {
          "new_key": "new_value"
        }
      ]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-30
        • 1970-01-01
        • 2017-11-06
        相关资源
        最近更新 更多