eu tinha um json
[
{
"name": "type1",
"type": "string",
"values": {
"set1": "dataA1",
"set1": "dataA2"
}
},
{
"name": "type2",
"type": "string",
"values": {
"set1": "dataB1",
"set2": "dataB2"
}
},
{
"name": "null",
"type": "string",
"values": {
"set1": "dataC1",
"set2": "dataC2"
}
},
{
"name": "type4",
"type": "string",
"values": {
"set1": "dataD1",
"set2": "dataD2"
}
}
]
Este é um json longo, então pensei em fazê-lo assim.
{
"type1": {
"type": "string",
"values": {
"set1": "dataA1",
"set2": "dataA2"
}
},
null: {
"type": "string",
"values": {
"set1": "dataB1",
"set2": "dataB2"
}
},
"type3": {
"type": "string",
"values": {
"set1": "dataC1",
"set2": "dataC2"
}
},
"type4": {
"type": "string",
"values": {
"set1": "dataD1",
"set2": "dataD2"
}
}
}
Então, eu quero perguntar se isso é realmente bom ou devo usar o antigo. E se este for melhor eu usei anteriormentejq '.[] | .name, .type' file.json
então como obter uma saída como esta com o novo json
"key"
"type"
"key"
"type"
"key"
"type"
então a saída se torna
type1
string
type2
string
# the type3 and its type is not needed cause its null
type4
string
além disso, alguns nomes de valores são nulos, então não quero que a string seja nula também.
Você pode usar
to_entries
, selecionar as chaves não nulas e extrair os valores:Idéia semelhante à de outra resposta , mas atuando no documento JSON original sem transformar os
name
valores das chaves em chaves:Isso extrai todas as entradas na matriz de nível superior cujos
name
valores não são a stringnull
. Em seguida, extrai os valoresname
etype
das entradas restantes.Em geral, faz pouco sentido usar data como valor de chaves em JSON, por isso optei por trabalhar com o arquivo original.