如何使用miller mlr或jq将两个JSON数组合并为一个数组?

问题描述 投票:0回答:1

我曾经是一个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

json csv jq miller
1个回答
0
投票

您正在寻找这样的东西:

to_entries | map({pair: .key} + (.value | transpose[] | {x: .[0], y: .[1]}))
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.