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

ike*_*ami 2 json edit jq

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

换句话说,一个人如何从

{
   "ObjectStates": [
      {
         "Description": "",
         "GMNotes": ""
      },
      {
         "Description": "foo",
         "GMNotes": ""
      }
   ]
}
Run Code Online (Sandbox Code Playgroud)

{
   "ObjectStates": [
      {
         "Description": "",
         "GMNotes": ""
      },
      {
         "Description": "foo",
         "GMNotes": "foo"
      }
   ]
}
Run Code Online (Sandbox Code Playgroud)

.ObjectStates[] | .GMNotes = .Description只返回修改后的对象,如沙箱中所示。

(我可以在 Perl 中轻松完成此操作。重点是使用jq。)

hek*_*mgl 8

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

jq '(.ObjectStates)|=map(.GMNotes=.Description)' file.json
Run Code Online (Sandbox Code Playgroud)

https://jqplay.org/s/vFV_H4brlH

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

jq '.ObjectStates[]|=(.GMNotes=.Description)' file.json
Run Code Online (Sandbox Code Playgroud)

谢谢切普纳!

https://jqplay.org/s/NCGezXPjLE

  • `|=` 是关键;您也可以使用 `.ObjectStates[] |= (.GMNotes = .Description)` 。 (2认同)