【问题标题】:How to get JSON key and value and select certain values in javascript?如何获取 JSON 键和值并在 javascript 中选择某些值?
【发布时间】:2021-08-31 13:00:21
【问题描述】:

我正在尝试从 github 公共 url api (ryanair) 获取 json 键和值,以便在 HTMl 中打印某些值,但我真的被卡住了。我在“data”变量中有 JSON 数据,我正在打印所有这些数据,但正如我所说,我只需要几个值。

JSON 结构(来自 HTTPS URL 的 JSON):

{
  "total": 1,
  "arrivalAirportCategories": null,
  "fares": [
    {
      "outbound": {
        "departureAirport": {
          "countryName": "Italia",
          "iataCode": "CTA",
          "name": "Catania",
          "seoName": "catania",
          "city": {
            "name": "Catania",
            "code": "CATANIA",
            "countryCode": "it"
          }
        },
        "arrivalAirport": {
          "countryName": "Hungría",
          "iataCode": "BUD",
          "name": "Budapest",
          "seoName": "budapest",
          "city": {
            "name": "Budapest",
            "code": "BUDAPEST",
            "countryCode": "hu"
          }
        },
        "departureDate": "2021-12-28T19:45:00",
        "arrivalDate": "2021-12-28T21:50:00",
        "price": {
          "value": 60,
          "valueMainUnit": "60",
          "valueFractionalUnit": "00",
          "currencyCode": "EUR",
          "currencySymbol": "€"
        },
        "flightKey": "FR~6279~ ~~CTA~12/28/2021 19:45~BUD~12/28/2021 21:50~~",
        "flightNumber": "FR6279",
        "sellKey": "0~C~ ~FR~CZ7LOW~BND7~~0~14~~X",
        "previousPrice": {
          "value": 60,
          "valueMainUnit": "60",
          "valueFractionalUnit": "00",
          "currencyCode": "EUR",
          "currencySymbol": "€"
        },
        "priceUpdated": 1630397463
      },
      "inbound": {
        "departureAirport": {
          "countryName": "Hungría",
          "iataCode": "BUD",
          "name": "Budapest",
          "seoName": "budapest",
          "city": {
            "name": "Budapest",
            "code": "BUDAPEST",
            "countryCode": "hu"
          }
        },
        "arrivalAirport": {
          "countryName": "Italia",
          "iataCode": "CTA",
          "name": "Catania",
          "seoName": "catania",
          "city": {
            "name": "Catania",
            "code": "CATANIA",
            "countryCode": "it"
          }
        },
        "departureDate": "2022-01-04T17:10:00",
        "arrivalDate": "2022-01-04T19:15:00",
        "price": {
          "value": 60,
          "valueMainUnit": "60",
          "valueFractionalUnit": "00",
          "currencyCode": "EUR",
          "currencySymbol": "€"
        },
        "flightKey": "FR~6278~ ~~BUD~01/04/2022 17:10~CTA~01/04/2022 19:15~~",
        "flightNumber": "FR6278",
        "sellKey": "0~C~ ~FR~CZ7LOW~BND7~~0~13~~X",
        "previousPrice": {
          "value": 60,
          "valueMainUnit": "60",
          "valueFractionalUnit": "00",
          "currencyCode": "EUR",
          "currencySymbol": "€"
        },
        "priceUpdated": 1630395258
      },
      "summary": {
        "price": {
          "value": 120,
          "valueMainUnit": "120",
          "valueFractionalUnit": "00",
          "currencyCode": "EUR",
          "currencySymbol": "€"
        },
        "previousPrice": {
          "value": 120,
          "valueMainUnit": "120",
          "valueFractionalUnit": "00",
          "currencyCode": "EUR",
          "currencySymbol": "€"
        },
        "newRoute": false,
        "tripDurationDays": 7
      }
    }
  ],
  "size": 1
}

我希望获得的价值:

fares.outbound.departureAirport.name;
fares.outbound.arrivalAirport.name;
fares.outbound.departureDate;
fares.outbound.price.value

入站也是同样的例子。你能帮我么?谢谢。

【问题讨论】:

  • 注意你实际拥有的数据。你不能只忽略数组!
  • fares.outbound您想使用哪种票价?

标签: javascript json object


【解决方案1】:

fares 是一个数组所以,

fares.forEach((fare) => {
  console.log(fare.outbound.departureAirport.name);
  console.log(fare.outbound.arrivalAirport.name);
  console.log(fare.outbound.departureDate);
  console.log(fare.outbound.price.value);
})

【讨论】:

  • 我收到“未捕获的类型错误:无法读取属性 'forEach' of null”。这就是我所做的:“var fares = JSON.parse(data);”其中数据是 getJSON() 返回。为什么我使用 parse() 时 JSON 为空?
  • 如果您执行fares =,则该变量包含整个对象。所以你必须做fares.fares.forEach(...)
  • 如果答案对您有所帮助,那么我将不胜感激接受它是正确的(从控件到问题的左上角)。
猜你喜欢
  • 2013-09-25
  • 1970-01-01
  • 2015-09-21
  • 1970-01-01
  • 2011-10-27
  • 2022-09-23
  • 2019-12-03
  • 2019-04-03
  • 2019-03-24
相关资源
最近更新 更多