Categories
jq json key

Using jq how can I replace the name of a key with something else

This should be easy enough… I want to rename a few keys (ideally with jq), whatever I do seems to error though. Here is a json example below:

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

I’d like to rename the veg key to fruit2 (or example, whatever is easiest) and also the worker key to job.

I realize this is possible in sed, but I’m trying to get to grips with jq

Use the following jq approach:

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

The output:

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