json 查询两个数组中的值并将它们合并在一起

w41d8nur  于 2023-03-09  发布在  其他
关注(0)|答案(1)|浏览(135)

我尝试使用shell脚本查询JSON中的2个独立数组,并将它们合并在一起,以便在Excel中以.csv格式打开。
下面是JSON的一个示例:

{
  "Defaults": {
    "Timestamps": [
      1677801540,
      1677801480,
      1677801420
    ]
  },
  "MetricDataForAccount": [
    {
      "Values": [
        2920126.416862745,
        2920285.9993725484,
        2920305.409303922
      ]
    }
  ]
}

目前,以下jq查询对我有效,但不是预期的格式:

jq -r '. | "\(.Defaults.Timestamps) \(.MetricDataForAccount[].Values)"'

输出[1677801540,1677801480,1677801420] [2920126.416862745,2920285.9993725484,2920305.409303922]
预期目标是使输出看起来如下所示:

1677801540, 2920126.416862745
1677801480, 2920285.9993725484
1677801420, 2920305.409303922
a64a0gku

a64a0gku1#

您可以transpose数组以对齐其项目:

jq -r '[.Defaults.Timestamps, .MetricDataForAccount[].Values] | transpose[] | @csv'

或者手动迭代(例如,使用to_entries访问.key索引):

jq -r '
  .Defaults.Timestamps as $timestamps
  | .MetricDataForAccount[].Values
  | to_entries[] | [$timestamps[.key], .value]
  | @csv
'

输出:

1677801540,2920126.416862745
1677801480,2920285.9993725484
1677801420,2920305.409303922

相关问题