【问题标题】:"Cannot index number with string" while filtering array过滤数组时“无法用字符串索引数字”
【发布时间】:2021-06-02 09:39:46
【问题描述】:

我有一个 json 文件(给定日期的西班牙电价),我想以纯文本格式提取给定 geo_namevalue:“Península”

文件如下:

{
  "indicator": {
    "name": "Término de facturación de energía activa del PVPC 2.0TD",
    "short_name": "PVPC T. 2.0TD",
    "id": 1001,
    "composited": false,
    "step_type": "linear",
    "disaggregated": true,
    "magnitud": [
      {
        "name": "Precio",
        "id": 23
      }
    ],
    "tiempo": [
      {
        "name": "Hora",
        "id": 4
      }
    ],
    "geos": [
      {
        "geo_id": 8741,
        "geo_name": "Península"
      },
      {
        "geo_id": 8742,
        "geo_name": "Canarias"
      },
      {
        "geo_id": 8743,
        "geo_name": "Baleares"
      },
      {
        "geo_id": 8744,
        "geo_name": "Ceuta"
      },
      {
        "geo_id": 8745,
        "geo_name": "Melilla"
      }
    ],
    "values_updated_at": "2021-06-01T20:18:22.000+02:00",
    "values": [
      {
        "value": 116.2,
        "datetime": "2021-06-02T00:00:00.000+02:00",
        "datetime_utc": "2021-06-01T22:00:00Z",
        "tz_time": "2021-06-01T22:00:00.000Z",
        "geo_id": 8741,
        "geo_name": "Península"
      },
      {
        "value": 116.2,
        "datetime": "2021-06-02T00:00:00.000+02:00",
        "datetime_utc": "2021-06-01T22:00:00Z",
        "tz_time": "2021-06-01T22:00:00.000Z",
        "geo_id": 8742,
        "geo_name": "Canarias"
      },
      {
        "value": 116.2,
        "datetime": "2021-06-02T00:00:00.000+02:00",
        "datetime_utc": "2021-06-01T22:00:00Z",
        "tz_time": "2021-06-01T22:00:00.000Z",
        "geo_id": 8743,
        "geo_name": "Baleares"
      },
      {
        "value": 116.2,
        "datetime": "2021-06-02T00:00:00.000+02:00",
        "datetime_utc": "2021-06-01T22:00:00Z",
        "tz_time": "2021-06-01T22:00:00.000Z",
        "geo_id": 8744,
        "geo_name": "Ceuta"
      },
      {
        "value": 116.2,
        "datetime": "2021-06-02T00:00:00.000+02:00",
        "datetime_utc": "2021-06-01T22:00:00Z",
        "tz_time": "2021-06-01T22:00:00.000Z",
        "geo_id": 8745,
        "geo_name": "Melilla"
      },
      {
        "value": 114.37,
        "datetime": "2021-06-02T01:00:00.000+02:00",
        "datetime_utc": "2021-06-01T23:00:00Z",
        "tz_time": "2021-06-01T23:00:00.000Z",
        "geo_id": 8741,
        "geo_name": "Península"
      },
      {
        "value": 114.37,
        "datetime": "2021-06-02T01:00:00.000+02:00",
        "datetime_utc": "2021-06-01T23:00:00Z",
        "tz_time": "2021-06-01T23:00:00.000Z",
        "geo_id": 8742,
        "geo_name": "Canarias"
      },
      {
        "value": 114.37,
        "datetime": "2021-06-02T01:00:00.000+02:00",
        "datetime_utc": "2021-06-01T23:00:00Z",
        "tz_time": "2021-06-01T23:00:00.000Z",
        "geo_id": 8743,
        "geo_name": "Baleares"
      },
      {
        "value": 114.37,
        "datetime": "2021-06-02T01:00:00.000+02:00",
        "datetime_utc": "2021-06-01T23:00:00Z",
        "tz_time": "2021-06-01T23:00:00.000Z",
        "geo_id": 8744,
        "geo_name": "Ceuta"
      },
      {
        "value": 114.37,
        "datetime": "2021-06-02T01:00:00.000+02:00",
        "datetime_utc": "2021-06-01T23:00:00Z",
        "tz_time": "2021-06-01T23:00:00.000Z",
        "geo_id": 8745,
        "geo_name": "Melilla"
      }
    ]
  }
}

我的“最佳猜测”是

$ jq '.indicator.values[] | .value | select(.indicator.values[] | .geo_name=="Península")' myfile.json

但我得到了一个

jq: error: Cannot index number with string

我可以改变什么以获得正确的结果?

【问题讨论】:

    标签: json jq


    【解决方案1】:

    试试这个:

    jq '.indicator.values[] | select(.geo_name=="Península") | .value' myfile.json
    

    【讨论】:

    • 非常感谢您的回答对我有用的是:jq '.indicator.values[] | select(.geo_name=="Península") .value' 从我之前的回答中得到这个;不幸的是,它似乎已被删除....
    【解决方案2】:

    非常感谢您的回答

    对我有用的是:

    jq '.indicator.values[] | select(.geo_name=="Península") .value'
    

    从我之前对我的问题的回答中得到这个;不幸的是,它似乎已被删除....

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-05
      • 1970-01-01
      • 1970-01-01
      • 2019-03-18
      • 1970-01-01
      • 2017-07-15
      • 2019-04-04
      • 2021-06-06
      相关资源
      最近更新 更多