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