如何使用 JQ 从 JSON 数据导出 csv
How to export csv from JSON data with using JQ
这是我试过的
curl -s 'https://api.hoge.com/api/?symbol=TEST' \ | jq -r '.[] | select(.bids ) | to_entries| map(.value) | @csv ' > OrderBook.csv;
然后我得到了这个错误
jq: error (at <stdin>:0): Cannot index number with string "bids"
我从上面的url中检索到的JSON数据是这个
{"lastUpdateId":18891938,
"bids":[
["3.23600000","101.76600000"],
["3.23500000","2161.63600000"],
["3.23100000","30.95000000"],
["3.23000000","3.12600000"],
["3.22900000","303.95100000"]
],
"asks":[
["3.24100000","15.90200000"],
["3.24200000","1679.00000000"],
["3.24500000","953.98800000"],
["3.24800000","7.57700000"],
["3.25400000","37.26700000"]
]}
如何将其导出为如下所示的 csv 文件
"bids","3.23600000","101.76600000"
"bids","3.23500000","2161.63600000"
"bids","3.23100000","30.95000000"
"bids","3.23000000","3.12600000"
"bids","3.22900000","303.95100000"
"asks","3.24100000","15.90200000"
"asks","3.24200000","1679.00000000"
"asks","3.24500000","953.98800000"
"asks","3.24800000","7.57700000"
"asks","3.25400000","37.26700000"
管道进入:
jq -r 'keys[] as $k | select(.[$k]|type=="array") |[$k]+.[$k][]|@csv'
或使用keys_unsorted
.
这个解决方案不可靠。您可能想考虑这个替代方案:
keys[] as $k |[$k]+.[$k][]? | @csv
查看实际效果
这是我试过的
curl -s 'https://api.hoge.com/api/?symbol=TEST' \ | jq -r '.[] | select(.bids ) | to_entries| map(.value) | @csv ' > OrderBook.csv;
然后我得到了这个错误
jq: error (at <stdin>:0): Cannot index number with string "bids"
我从上面的url中检索到的JSON数据是这个
{"lastUpdateId":18891938,
"bids":[
["3.23600000","101.76600000"],
["3.23500000","2161.63600000"],
["3.23100000","30.95000000"],
["3.23000000","3.12600000"],
["3.22900000","303.95100000"]
],
"asks":[
["3.24100000","15.90200000"],
["3.24200000","1679.00000000"],
["3.24500000","953.98800000"],
["3.24800000","7.57700000"],
["3.25400000","37.26700000"]
]}
如何将其导出为如下所示的 csv 文件
"bids","3.23600000","101.76600000"
"bids","3.23500000","2161.63600000"
"bids","3.23100000","30.95000000"
"bids","3.23000000","3.12600000"
"bids","3.22900000","303.95100000"
"asks","3.24100000","15.90200000"
"asks","3.24200000","1679.00000000"
"asks","3.24500000","953.98800000"
"asks","3.24800000","7.57700000"
"asks","3.25400000","37.26700000"
管道进入:
jq -r 'keys[] as $k | select(.[$k]|type=="array") |[$k]+.[$k][]|@csv'
或使用keys_unsorted
.
这个解决方案不可靠。您可能想考虑这个替代方案:
keys[] as $k |[$k]+.[$k][]? | @csv
查看实际效果