Digamos que eu tenha este json:
[
{
"first": 12355,
"second": "abc"
},
{
"first": 89010,
"second": "def"
},
{
"first": 23423,
"second": "hij"
},
{
"first": 23456,
"second": "klm"
},
{
"first": 11111,
"second": "nop"
}
]
E eu gostaria (de uma forma genérica) que os mescle em 1 objeto onde o valor de cada chave seja mesclado em um array dos valores correspondentes:
{
"first" : [12355,89010,23423,23456,11111],
"second" : ["abc","def","hij","klm","nop"]
}
Eu estava tentando isso, mas não produz nenhuma saída.
reduce .[] as $final (
{};
((. | keys) as $k |
map(
( (.[$k] // []) += ($final[$k] // []))
)
)
)
Eu usaria
to_entries
(para acessar chaves e valores) como parte da iteração:Demonstração
Aqui está outra maneira
group_by
de juntar os itens correspondentes:Demonstração
Saída:
Ou para simplificar, considere usar
transpose
, por exemplo