我曾经是一个jq受虐狂,但我发现了mlr,这似乎提供了更多(但不同)痛苦的机会。
我发现了一个不错的网站,它允许我在没有API密钥的情况下发出curl命令等,从而为我提供我感兴趣的数据。问题是我选择的用于显示数据的工具(Visual Data Tools' Datagraph)不能解析发出的 JSON。
我可以使用 awk、sed 等写一些难看的东西,但使用 jq 或 mlr 之类的东西在一行中实现这一点会更优雅。
(x, y) 对位于单独的数组中。有没有一种方法可以实现以下目标?
我需要转换的数据的截断示例。看来我可以将 JSON 转换为 JSON,或者将 JSON 转换为 CSV 来实现我的目标。
{
"btcusd": {
"x": [
1254700800000,
1254787200000,
1254873600000,
1730419200000
],
"y": [
0.00076394,
0.00076394,
0.00088456,
69513.1578978095
]
},
"xaubtc": {
"x": [
1254700800000,
1254787200000,
1254873600000,
1719446400000
],
"y": [
1316202.8431552218,
1359727.2037070976,
1176008.410961382,
0.037321851310868535
]
}
}
Datagraph 可以解析的输出数据示例(手动创建):
[
{
"pair" : "btcusd",
"x" : 1254700800000,
"y" : 0.00076394
},
{
"pair" : "btcusd",
"x" : 1254787200000,
"y" : 0.00076394
},
{
"pair" : "btcusd",
"x" : 1254873600000,
"y" : 0.00088456
},
{
"pair" : "btcusd",
"x" : 1730419200000,
"y" : 69513.1578978095
},
{
"pair" : "xaubtc",
"x" : 1254700800000,
"y" : 1316202.84315522
},
{
"pair" : "xaubtc",
"x" : 1254787200000,
"y" : 1359727.2037071
},
{
"pair" : "xaubtc",
"x" : 1254873600000,
"y" : 1176008.41096138
},
{
"pair" : "xaubtc",
"x" : 1719446400000,
"y" : 0.0373218513108685
}
]
在 Datagraph 中会产生这样的表格
pair y x
btcusd 0.00076394 1.2547008e12
btcusd 0.00076394 1.2547872e12
btcusd 0.00088456 1.2548736e12
btcusd 69513.1578978095 1.7304192e12
xaubtc 1.31620284315522e6 1.2547008e12
xaubtc 1.3597272037071e6 1.2547872e12
xaubtc 1.17600841096138e6 1.2548736e12
xaubtc 0.0373218513108686 1.7194464e12
虽然这样会更好(手动漂亮打印)
pair1 x1 y1 pair2 x2 y2
btcusd 1254700800000 0.00076394 xaubtc 1254700800000 1316202.8431552218
btcusd 1254787200000 0.00076394 xaubtc 1254787200000 1359727.2037070976
btcusd 1254873600000 0.00088456 xaubtc 1254873600000 1176008.410961382
btcusd 1730419200000 69513.1578978095 xaubtc 1719446400000 0.037321851310868535
您正在寻找这样的东西:
to_entries | map({pair: .key} + (.value | transpose[] | {x: .[0], y: .[1]}))