Removing and adding key-value from JSON file using jq

I have an json file as follows below-

{
  "key1": [
    "value1"
  ],
  "key2": [
    "value2"
  ],
  "key3": [
    "value3"
  ],
  "key4": {
    "name": "value4"
  },
  "key5": [
    {
      "field1": "abc",
      "field2": "xyz"
    }
  ]
}

I want to remove field 2 from key5 array and add another field say field3 in key5 array using jq I tried various way but couldn't figure it how to do this in single command. Can you please help . Thanks in advance


.key5[] |= ( ... ) allows you to modify each element of the array found at .key5.

Therein, we can use the usual commands for deleting and adding fields.

jq '.key5[] |= ( del( .field2 ) | .field3 = "foo" )'

Demo in jqplay

Here's a variation where the value to add is provided as a command-line argument:

jq --arg val foo '.key5[] |= ( del( .field2 ) | .field3 = $val )'