j'ai cette chaîne JSONEn Jq comment développer un tableau de JSON de tuples en plusieurs éléments
{"op":"mcm","clk":"1147179697","pt":1439869512969,
"mc":[ {"id":"1.120040663",
"rc":[
{"atb":[[7.6,35],[7.2,25]],"id":11111},
{"atb":[[1.04,100],[1.02,200]],"id":22222}
],
"con":true,
"img":false}
]}
et ont besoin d'extraire les éléments atb dans les prix et les montants ainsi que l'ID:
[{
"atb_price": [7.6, 7.2]
"atb_amount": [35, 25]
"atb_id": [11111, 11111]
},
{
"atb_price": [1.04, 1.02]
"atb_amount": [100, 200]
"atb_id": [22222, 22222]
}]
Jusqu'à présent, j'ai ce filtre qui me procure un peu de chemin mais pas tout à fait.
1. Donne une combinaison de tous les prix/montants/identifiants.
(.mc[].rc | map({"prices":.atb[][0], "vol":.atb[][1], "id":.id}))
2. L'élément id reste en dehors de la matrice.
.mc[].rc | map({"id":.id, "atb": (.atb | map({ "amount": .[1], "price":.[0] }))[] })
Toute aide grandement appréciée.
EDIT Finalement, j'ai modifié une des réponses un peu parce que ma chaîne JSON était plus complexe que la première pensée, dans certains cas, il y a TRD éléments à traiter.
{"op":"mcm","clk":"1147179697","pt":1439869512969,
"mc":[ {"id":"1.120040663",
"rc":[
{"atb":[[7.6,35],[7.2,25]],"id":11111},
{"atb":[[1.04,100],[1.02,200]],"id":22222}
{"trd":[[1.04,100],[1.02,200]],"id":22222}
],
"con":true,
"img":false}
]}
La solution,
(. | del(.mc))
+ (.mc[] | del(.rc))
+ (.mc[].rc[]
| .id as $id | .ltp as $ltp | .tv as $rtv
| (select(.atl) | (.atl | {"atl.price": map(.[0]), "atl.volume": map(.[1]), "runner.id": map($id)})),
(select(.atb) | (.atb | {"atb.price": map(.[0]), "atb.volume": map(.[1]), "runner.id": map($id)})),
(select(.trd) | (.trd | {"trd.price": map(.[0]), "trd.volume": map(.[1]), "runner.id": map($id)}))
)
Quoi de neuf avec le tag Python? –
Désolé, j'aurais dû préciser que j'utilise jq via pyjq. Je crois que cela fonctionne comme une interface à jq. La syntaxe et les arguments sont les mêmes. – user1191273