Jestem nowy w JQ, mam plik JSON (Call: ALL.2):

{"code":0, "data": {"date": 1617978312600,"ticker": {"KAVAUSDT": {"vol": "15022.96236047","low": "7.0419","open":"7.8990","high": "8.1997","last": "7.1516","buy": "7.1516","buy_amount":"11.02402741","sell":"7.1699","sell_amount": "37.46319593"},"CFXUSDT": {"vol": "108550.36674746","low": "1.226636","open": "1.267724","high": "1.378400","last": "1.273187","buy": "1.272200","buy_amount": "14.65071234","sell": "1.294900","sell_amount": "84.88000789"},"SUSHIBTC": {"vol": "5644.10352324","low": "0.00024680","open": "0.00024857","high": "0.00026493","last": "0.00025704","buy": "0.00025563","buy_amount": "104.74291100","sell": "0.00025730","sell_amount": "94.16400000"},"SUNUSDT": {"vol": "7058.81491709","low":"37.3431","open":"37.9590","high": "44.0446","last": "40.6945","buy": "40.1001","buy_amount": "25.40000000","sell":"41.0771","sell_amount": "3.40000000"}}}, "message": "OK"}

Chcę przekonwertować dane do CSV (przestrzeń oddzielona) podobna do następujących: Jak pokazano na załączonym obrazie

Próbowałem następujących, ale nie działa:

mlr --j2c cat all.2>allq1.csv

jq -r '.[]|[ .ticker,.ticker.vol,.ticker.low,.ticker.open,.ticker.high,.ticker.last,.ticker.buy,.ticker.buy_amount,.ticker.sell,.ticker.sell_amount ]|@csv' all.2 > all.csv
-1
mehdi shokati 13 kwiecień 2021, 13:42

1 odpowiedź

Najlepsza odpowiedź

Próbować

jq -r '.data.ticker | to_entries[] | [.key, (.value | (.vol|tonumber), (.low|tonumber))] | @csv'

Objaśnienie: .data.ticker - ścieżka do danych, {x1}} - Ponieważ nazwa tickera jest kluczem, musimy przekonwertować ten obiekt na .key i .value, () - Nawias pomaga, więc nie musisz pisać pełnej ścieżki za każdym razem, tonumber - Konwertuj ciąg do numeru (Usuń podwójne cytaty)

Dodaj wszystkie swoje pola

1
lojza 13 kwiecień 2021, 15:05