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
Syntax: obj['New key'] = obj['old key']; Note: Renaming the object by simple assignment of variable could be applied on multiple key, value pairs.
Use the following jq approach:
jq '[.[] | .["fruit2"] = .veg | .["job"] = .worker | del(.veg, .worker)]' file
The output:
[ { "fruit": "strawberry", "fruit2": "apple", "job": "gardener" } ]
The key (:-) is with_entries. E.g., given a single object:
with_entries(if .key == "veg" then .key = "fruit2" else . end)
In your case, since you have an array of objects, you could wrap the above in map( ... )
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With