使用jq如何用其他东西替换键的名称

时间:2017-04-20 14:17:57

标签: json key edit jq

这应该很容易......我想重命名几个键(理想情况下是jq),不管我做什么似乎都是错误的。这是下面的json示例:

[
 {
  "fruit": "strawberry",
  "veg": "apple",
  "worker": "gardener"
 }
]

我想将veg键重命名为fruit2(或示例,最简单的)以及作业的工作键。

我意识到这在sed中是可能的,但我正试图掌握jq

2 个答案:

答案 0 :(得分:9)

使用以下 jq 方法:

jq '[.[] | .["fruit2"] = .veg | .["job"] = .worker | del(.veg, .worker)]' file

输出:

[
  {
    "fruit": "strawberry",
    "fruit2": "apple",
    "job": "gardener"
  }
]

答案 1 :(得分:5)

密钥(:-)是with_entries。例如,给出一个对象:

with_entries(if .key == "veg" then .key = "fruit2" else . end)

在您的情况下,由于您有一个对象数组,您可以在map( ... )中包含上述内容。