I have a JSON file like this:
{
"cases": [
{"id": "1", "count": 2, "ignore": "f"},
{"id": "2", "count": 7, "ignore": "o"},
{"id": "3", "count": 11, "ignore": "o"}
]
}
Doing jq '.cases[] | { "(.id)" : .count }' test.json
gives
{
"1": 2
}
{
"2": 7
}
{
"3": 11
}
but I need
{
"1": 2,
"2": 7,
"3": 11
}
How can I get there?
3
Answers
You need to collect the results into an array and
add
themfrom_entries
sounds like the obvious choice. First map your input array to an array of key-value pairs, then construct an object from this array:Here’s an approach using
reduce
which iteratively builds up the result object:Demo