Étant donné un fichier json au format:
[
{
name : "A",
value : "1"
},
{
name : "B",
value : "5"
},
{
name : "E",
value : "8"
}
]
Comment pourrais-je le convertir en quelque chose comme ça en utilisant jq:
{
"A" : {
name : "A",
value : "1"
},
"B" : {
name : "B",
value : "5"
},
"E" : {
name : "E",
value : "8"
}
}
jq '{(.[].name) : "the name"}' 'myfile.json'
m'obtient un objet avec les touches [] .name mais comment puis-je lui assigner l'objet?
map( { (.name|tostring): . } ) | add
(Le tostring
est pour la sécurité/robustesse.)
Si votre jq a INDEX/1
(introduit après la sortie de la version 1.5), vous pouvez simplement écrire:
INDEX(.name)
Construisez simplement un nouvel objet en passant par les éléments du tableau. Ajoutez les éléments à l'objet avec name
comme clé.
reduce .[] as $i ({}; .[$i.name] = $i)