【问题标题】:Is there a way to fetch needed information from JSON file in React Native有没有办法从 React Native 中的 JSON 文件中获取所需的信息
【发布时间】:2021-07-19 10:57:49
【问题描述】:

我正在使用 COVID-19 API (https://api.covidactnow.org/v2/counties.json?apiKey=) 来记录各种信息,例如美国每个县的病例数和死亡人数。在我的 React Native 应用程序中,我检索了用户的位置,更具体地说,是用户所在的县、州和国家。在这种情况下,我将用户的县名存储在countyName 中。我想根据 countyName 的内容从 JSON 文件中获取具体病例和死亡人数。我在下面的 JSON 文件中有一个县的 sn-p。我在想我可以进入数组的索引和实际值,然后获取病例和死亡人数。

[
  {
    "fips": "02013",
    "country": "US",
    "state": "AK",
    "county": "Aleutians East Borough",
    "level": "county",
    "lat": null,
    "locationId": "iso1:us#iso2:us-ak#fips:02013",
    "long": null,
    "population": 3337,
    "metrics": {
      "testPositivityRatio": null,
      "testPositivityRatioDetails": {
        "source": "other"
      },
      "caseDensity": 0,
      "contactTracerCapacityRatio": null,
      "infectionRate": 4.71887277063,
      "infectionRateCI90": 1.1615979428900003,
      "icuHeadroomRatio": null,
      "icuHeadroomDetails": null,
      "icuCapacityRatio": null,
      "vaccinationsInitiatedRatio": null,
      "vaccinationsCompletedRatio": 0.27509739286784535
    },
    "riskLevels": {
      "overall": 0,
      "testPositivityRatio": 4,
      "caseDensity": 0,
      "contactTracerCapacityRatio": 4,
      "infectionRate": 3,
      "icuHeadroomRatio": 4,
      "icuCapacityRatio": 4
    },
    "actuals": {
      "cases": 363,
      "deaths": 2,
      "positiveTests": null,
      "negativeTests": null,
      "contactTracers": null,
      "hospitalBeds": {
        "capacity": null,
        "currentUsageTotal": null,
        "currentUsageCovid": null,
        "typicalUsageRate": null
      },
      "icuBeds": {
        "capacity": null,
        "currentUsageTotal": null,
        "currentUsageCovid": null,
        "typicalUsageRate": null
      },
      "newCases": 0,
      "newDeaths": 0,
      "vaccinesDistributed": null,
      "vaccinationsInitiated": null,
      "vaccinationsCompleted": 918,
      "vaccinesAdministered": null,
      "vaccinesAdministeredDemographics": null,
      "vaccinationsInitiatedDemographics": null
    },
    "annotations": {
      "cases": {
        "sources": [
          {
            "type": "NYTimes",
            "url": "https://github.com/nytimes/covid-19-data",
            "name": "The New York Times"
          }
        ],
        "anomalies": []
      },
      "deaths": {
        "sources": [
          {
            "type": "NYTimes",
            "url": "https://github.com/nytimes/covid-19-data",
            "name": "The New York Times"
          }
        ],
        "anomalies": []
      },
      "positiveTests": null,
      "negativeTests": null,
      "contactTracers": null,
      "hospitalBeds": null,
      "icuBeds": null,
      "newCases": null,
      "newDeaths": null,
      "vaccinesDistributed": null,
      "vaccinationsInitiated": null,
      "vaccinationsCompleted": {
        "sources": [
          {
            "type": "other",
            "url": "https://covid.cdc.gov/covid-data-tracker/#county-view",
            "name": "Centers for Disease Control and Prevention"
          }
        ],
        "anomalies": []
      },
      "vaccinesAdministered": null,
      "testPositivityRatio": null,
      "caseDensity": {
        "sources": [
          {
            "type": "NYTimes",
            "url": "https://github.com/nytimes/covid-19-data",
            "name": "The New York Times"
          }
        ],
        "anomalies": []
      },
      "contactTracerCapacityRatio": null,
      "infectionRate": {
        "sources": [
          {
            "type": "NYTimes",
            "url": "https://github.com/nytimes/covid-19-data",
            "name": "The New York Times"
          }
        ],
        "anomalies": []
      },
      "infectionRateCI90": {
        "sources": [
          {
            "type": "NYTimes",
            "url": "https://github.com/nytimes/covid-19-data",
            "name": "The New York Times"
          }
        ],
        "anomalies": []
      },
      "icuHeadroomRatio": null,
      "icuCapacityRatio": null,
      "vaccinationsInitiatedRatio": null,
      "vaccinationsCompletedRatio": null
    },
    "lastUpdatedDate": "2021-04-26",
    "url": "https://covidactnow.org/us/alaska-ak/county/aleutians_east_borough"
  },

【问题讨论】:

    标签: json typescript react-native api fetch


    【解决方案1】:

    如果您只对特定县感兴趣,可以使用an endpoint for this in the API。只需要查询这个,就不需要对获取的数据做进一步的过滤了:

    https://api.covidactnow.org/v2/county/{fips}.json?apiKey=YOUR_KEY_HERE
    

    【讨论】:

    • 谢谢你!我以前没有注意到。
    【解决方案2】:

    您从 API 获得的 JSON 格式响应是一个对象数组。 要从对象数组中获取死亡人数和病例数,您需要执行以下操作:

        const response= [
            {
            "fips": "02013",
            "country": "US",
            "state": "AK",
            "county": "Aleutians East Borough",
            "level": "county",
            "lat": null,
            "locationId": "iso1:us#iso2:us-ak#fips:02013",
            "long": null,
            "population": 3337,
            "metrics": {
              "testPositivityRatio": null,
              "testPositivityRatioDetails": {
                "source": "other"
              },
              "caseDensity": 0,
              "contactTracerCapacityRatio": null,
              "infectionRate": 4.71887277063,
              "infectionRateCI90": 1.1615979428900003,
              "icuHeadroomRatio": null,
              "icuHeadroomDetails": null,
              "icuCapacityRatio": null,
              "vaccinationsInitiatedRatio": null,
              "vaccinationsCompletedRatio": 0.27509739286784535
             },
             "riskLevels": {
             "overall": 0,
              "testPositivityRatio": 4,
              "caseDensity": 0,
              "contactTracerCapacityRatio": 4,
              "infectionRate": 3,
              "icuHeadroomRatio": 4,
              "icuCapacityRatio": 4
             },
             "actuals": {
             "cases": 363,
              "deaths": 2,
              "positiveTests": null,
              "negativeTests": null,
              "contactTracers": null,
              "hospitalBeds": {
                "capacity": null,
                "currentUsageTotal": null,
                "currentUsageCovid": null,
                "typicalUsageRate": null
              },
              "icuBeds": {
                "capacity": null,
                "currentUsageTotal": null,
                "currentUsageCovid": null,
                "typicalUsageRate": null
              },
              "newCases": 0,
              "newDeaths": 0,
              "vaccinesDistributed": null,
              "vaccinationsInitiated": null,
              "vaccinationsCompleted": 918,
              "vaccinesAdministered": null,
              "vaccinesAdministeredDemographics": null,
              "vaccinationsInitiatedDemographics": null
            },
            "annotations": {
              "cases": {
                "sources": [
                  {
                    "type": "NYTimes",
                    "url": "https://github.com/nytimes/covid-19-data",
                    "name": "The New York Times"
                  }
                ],
                "anomalies": []
              },
              "deaths": {
                "sources": [
                  {
                    "type": "NYTimes",
                    "url": "https://github.com/nytimes/covid-19-data",
                    "name": "The New York Times"
                  }
                ],
                "anomalies": []
              },
              "positiveTests": null,
              "negativeTests": null,
              "contactTracers": null,
              "hospitalBeds": null,
              "icuBeds": null,
              "newCases": null,
              "newDeaths": null,
              "vaccinesDistributed": null,
              "vaccinationsInitiated": null,
              "vaccinationsCompleted": {
                "sources": [
                  {
                    "type": "other",
                    "url": "https://covid.cdc.gov/covid-data-tracker/#county-view",
                    "name": "Centers for Disease Control and Prevention"
                  }
                ],
                "anomalies": []
              },
              "vaccinesAdministered": null,
              "testPositivityRatio": null,
              "caseDensity": {
                "sources": [
                  {
                    "type": "NYTimes",
                    "url": "https://github.com/nytimes/covid-19-data",
                    "name": "The New York Times"
                  }
                ],
                "anomalies": []
              },
              "contactTracerCapacityRatio": null,
              "infectionRate": {
                "sources": [
                  {
                    "type": "NYTimes",
                    "url": "https://github.com/nytimes/covid-19-data",
                    "name": "The New York Times"
                  }
                ],
                "anomalies": []
              },
              "infectionRateCI90": {
                "sources": [
                  {
                    "type": "NYTimes",
                    "url": "https://github.com/nytimes/covid-19-data",
                    "name": "The New York Times"
                  }
                ],
                "anomalies": []
              },
              "icuHeadroomRatio": null,
              "icuCapacityRatio": null,
              "vaccinationsInitiatedRatio": null,
              "vaccinationsCompletedRatio": null
            },
            "lastUpdatedDate": "2021-04-26",
            "url": "https://covidactnow.org/us/alaska-ak/county/aleutians_east_borough"
          }
        ]
        const enteredCountryName = "US";
        //Getting the required country name from the array of objects using filter method
        const countryArray = response.filter(item => item.country === enteredCountryName)
        const noOfDeaths = countryArray[0].actuals.deaths;
        const noOfCases = countryArray[0].actuals.cases;
        console.log({noOfDeaths, noOfCases})

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-23
      相关资源
      最近更新 更多