I'm using jq to transform a JSON input with some nested dynamic keys in this format:
{
"somePackage": {
"someVersion": {
"size": {
"regular": 1234,
"compressed": 123
}
}
},
"someOtherPackage": {
"someOtherVersion": {
"size": {
"regular": 5678,
"compressed": 567
}
}
}
}
... into an array of objects in this format:
[
{
"name": "somePackage",
"version": "someVersion",
"regular": 1234,
"compressed": 123
},
{
"name": "someOtherPackage",
"version": "someOtherVersion",
"regular": 5678,
"compressed": 567
}
]
I've managed to do it using:
jq 'to_entries | map_values({
name: .key,
version: .value|keys[0],
regular: .value[.value|keys[0]].size.regular,
compressed: .value[.value|keys[0]].size.compressed
})' input.json
Is there a way to access the dynamic keys of each level in the original JSON so I can use them as values in my output with less repetition?