【问题标题】:JQ get data from an array of arrayJQ从数组数组中获取数据
【发布时间】:2021-10-07 11:55:54
【问题描述】:

如何从数组数组中获取值。这是我必须从中获取数据的 JSON:

{
  "status": "success",
  "data": {
    "resultType": "matrix",
    "result": [
      {
        "metric": {
          "myMetric": "ABC"
        },
        "values": [
          [
            1633597734,
            "64.54166666666667"
          ],
          [
            1633598034,
            "65.51666666666667"  <-- wanted value
          ]
        ]
      }
    ]
  }
}

我必须从values 中的最后一个数组中获取值。 我尝试了以下方法:

jq .data.result.values input.json
jq .data.result.values[] input.json
jq .data.result.values[][] input.json

每一个结果都是:

jq: error (at json:0): Cannot index array with string "values"

如何从values 中的最后一个数组中获取值?

【问题讨论】:

  • 你能用jq .data.result[0].values[1][1] input.json试试吗?或者如果你想要所有引用的浮点数jq .data.result[0].values[][1] input.json
  • 如果您想要values 中最后一个数组中的最后一个条目是result 中的最后一个条目,则可以使用:.data.result[-1].values[-1][-1];你想要那个,还是所有values
  • @MarkoE 第一个是我需要的并且工作正常,tnx
  • @BenjaminW。正是我需要的

标签: json linux jq


【解决方案1】:

可以使用负索引从数组后面枚举:获取result的最后一个元素values的最后一个数组的最后一个元素:

.data.result[-1].values[-1][-1]

【讨论】:

    【解决方案2】:

    演示:https://jqplay.org/s/YMpB8-A4-Q

    filter: 
    .data.result[].values[1][1]?
    
    input:
    {
      "status": "success",
      "data": {
        "resultType": "matrix",
        "result": [
          {
            "metric": {
              "myMetric": "ABC"
            },
            "values": [
              [
                1633597734,
                "64.54166666666667"
              ],
              [
                1633598034,
                "65.51666666666667"
              ]
            ]
          }
        ]
      }
    }
    
    output:
    "65.51666666666667"
    
    

    【讨论】:

      猜你喜欢
      • 2011-05-23
      • 1970-01-01
      • 1970-01-01
      • 2018-11-18
      • 1970-01-01
      • 2017-10-06
      • 1970-01-01
      • 2012-02-26
      • 1970-01-01
      相关资源
      最近更新 更多