使用JQ将对象的一个​​字段复制到另一个

Using JQ to copy one field of an object into another

在我的 JSON 中有一些带有 Description 属性 的对象。如何使用 JQ 将此值复制到同一对象的 GMNotes 属性?

换句话说,如何从

{
   "ObjectStates": [
      {
         "Description": "",
         "GMNotes": ""
      },
      {
         "Description": "foo",
         "GMNotes": ""
      }
   ]
}

{
   "ObjectStates": [
      {
         "Description": "",
         "GMNotes": ""
      },
      {
         "Description": "foo",
         "GMNotes": "foo"
      }
   ]
}

.ObjectStates[] | .GMNotes = .Description仅returns修改对象,如图sandbox.

(我可以在 Perl 中轻松做到这一点。重点是使用 jq。)

您可以将 map() 更新赋值 运算符结合使用 |=:

jq '(.ObjectStates)|=map(.GMNotes=.Description)' file.json

https://jqplay.org/s/vFV_H4brlH

PS:除了使用map你也可以使用下面的命令,关键是使用|=.

jq '.ObjectStates[]|=(.GMNotes=.Description)' file.json

谢谢切普纳!

https://jqplay.org/s/NCGezXPjLE