简体   繁体   English

如何使用 node.js 或 javascript 提取特定数据 Json 数据

[英]How to extract specific data Json data using node.js or javascript

I have tried all possible means but no one seems to work as expected.我已经尝试了所有可能的方法,但似乎没有人能按预期工作。 I trying to extract data from a particular country in this covid-19 api but all my attempts failed.我试图从这个 covid-19 api 中的特定国家提取数据,但我所有的尝试都失败了。

Here is some part of the JSON data am trying to extract data from;这是我试图从中提取数据的 JSON 数据的一部分;

{
"Global": {
"NewConfirmed": 70871,
"TotalConfirmed": 2470922,
"NewDeaths": 4940,
"TotalDeaths": 169952,
"NewRecovered": 21835,
"TotalRecovered": 645094
},
"Countries": [
{
"Country": "ALA Aland Islands",
"CountryCode": "AX",
"Slug": "ala-aland-islands",
"NewConfirmed": 0,
"TotalConfirmed": 0,
"NewDeaths": 0,
"TotalDeaths": 0,
"NewRecovered": 0,
"TotalRecovered": 0,
"Date": "2020-04-21T03:35:46Z"
},
{
"Country": "Afghanistan",
"CountryCode": "AF",
"Slug": "afghanistan",
"NewConfirmed": 30,
"TotalConfirmed": 1026,
"NewDeaths": 3,
"TotalDeaths": 36,
"NewRecovered": 4,
"TotalRecovered": 135,
"Date": "2020-04-21T03:35:46Z"
},
{
"Country": "Albania",
"CountryCode": "AL",
"Slug": "albania",
"NewConfirmed": 22,
"TotalConfirmed": 584,
"NewDeaths": 0,
"TotalDeaths": 26,
"NewRecovered": 13,
"TotalRecovered": 327,
"Date": "2020-04-21T03:35:46Z"
},
{
"Country": "Algeria",
"CountryCode": "DZ",
"Slug": "algeria",
"NewConfirmed": 89,
"TotalConfirmed": 2718,
"NewDeaths": 9,
"TotalDeaths": 384,
"NewRecovered": 52,
"TotalRecovered": 1099,
"Date": "2020-04-21T03:35:46Z"
},
{
"Country": "American Samoa",
"CountryCode": "AS",
"Slug": "american-samoa",
"NewConfirmed": 0,
"TotalConfirmed": 0,
"NewDeaths": 0,
"TotalDeaths": 0,
"NewRecovered": 0,
"TotalRecovered": 0,
"Date": "2020-04-21T03:35:46Z"
},
{
"Country": "Andorra",
"CountryCode": "AD",
"Slug": "andorra",
"NewConfirmed": 4,
"TotalConfirmed": 717,
"NewDeaths": 1,
"TotalDeaths": 37,
"NewRecovered": 13,
"TotalRecovered": 248,
"Date": "2020-04-21T03:35:46Z"
},
{
"Country": "Angola",
"CountryCode": "AO",
"Slug": "angola",
"NewConfirmed": 0,
"TotalConfirmed": 24,
"NewDeaths": 0,
"TotalDeaths": 2,
"NewRecovered": 0,
"TotalRecovered": 6,
"Date": "2020-04-21T03:35:46Z"
},
{
"Country": "Anguilla",
"CountryCode": "AI",
"Slug": "anguilla",
"NewConfirmed": 0,
"TotalConfirmed": 0,
"NewDeaths": 0,
"TotalDeaths": 0,
"NewRecovered": 0,
"TotalRecovered": 0,
"Date": "2020-04-21T03:35:46Z"
},
{
"Country": "Antarctica",
"CountryCode": "AQ",
"Slug": "antarctica",
"NewConfirmed": 0,
"TotalConfirmed": 0,
"NewDeaths": 0,
"TotalDeaths": 0,
"NewRecovered": 0,
"TotalRecovered": 0,
"Date": "2020-04-21T03:35:46Z"
},
{
"Country": "Antigua and Barbuda",
"CountryCode": "AG",
"Slug": "antigua-and-barbuda",
"NewConfirmed": 0,
"TotalConfirmed": 23,
"NewDeaths": 0,
"TotalDeaths": 3,
"NewRecovered": 0,
"TotalRecovered": 3,
"Date": "2020-04-21T03:35:46Z"
},
{
"Country": "Argentina",
"CountryCode": "AR",
"Slug": "argentina",
"NewConfirmed": 102,
"TotalConfirmed": 2941,
"NewDeaths": 4,
"TotalDeaths": 136,
"NewRecovered": 28,
"TotalRecovered": 737,
"Date": "2020-04-21T03:35:46Z"
},
{
"Country": "Armenia",
"CountryCode": "AM",
"Slug": "armenia",
"NewConfirmed": 48,
"TotalConfirmed": 1339,
"NewDeaths": 2,
"TotalDeaths": 22,
"NewRecovered": 35,
"TotalRecovered": 580,
"Date": "2020-04-21T03:35:46Z"
},
{
"Country": "Aruba",
"CountryCode": "AW",
"Slug": "aruba",
"NewConfirmed": 0,
"TotalConfirmed": 0,
"NewDeaths": 0,
"TotalDeaths": 0,
"NewRecovered": 0,
"TotalRecovered": 0,
"Date": "2020-04-21T03:35:46Z"
},
{
"Country": "Australia",
"CountryCode": "AU",
"Slug": "australia",
"NewConfirmed": 0,
"TotalConfirmed": 6547,
"NewDeaths": 0,
"TotalDeaths": 67,
"NewRecovered": 0,
"TotalRecovered": 4124,
"Date": "2020-04-21T03:35:46Z"
},
{
"Country": "Austria",
"CountryCode": "AT",
"Slug": "austria",
"NewConfirmed": 46,
"TotalConfirmed": 14795,
"NewDeaths": 18,
"TotalDeaths": 470,
"NewRecovered": 130,
"TotalRecovered": 10631,
"Date": "2020-04-21T03:35:46Z"
},
{
"Country": "Azerbaijan",
"CountryCode": "AZ",
"Slug": "azerbaijan",
"NewConfirmed": 38,
"TotalConfirmed": 1436,
"NewDeaths": 0,
"TotalDeaths": 19,
"NewRecovered": 79,
"TotalRecovered": 791,
"Date": "2020-04-21T03:35:46Z"
},
{
"Country": "Bahamas",
"CountryCode": "BS",
"Slug": "bahamas",
"NewConfirmed": 5,
"TotalConfirmed": 60,
"NewDeaths": 0,
"TotalDeaths": 9,
"NewRecovered": 1,
"TotalRecovered": 11,
"Date": "2020-04-21T03:35:46Z"
},
{
"Country": "Bahrain",
"CountryCode": "BH",
"Slug": "bahrain",
"NewConfirmed": 26,
"TotalConfirmed": 1907,
"NewDeaths": 0,
"TotalDeaths": 7,
"NewRecovered": 10,
"TotalRecovered": 769,
"Date": "2020-04-21T03:35:46Z"
},
{
"Country": "Bangladesh",
"CountryCode": "BD",
"Slug": "bangladesh",
"NewConfirmed": 492,
"TotalConfirmed": 2948,
"NewDeaths": 10,
"TotalDeaths": 101,
"NewRecovered": 10,
"TotalRecovered": 85,
"Date": "2020-04-21T03:35:46Z"
},
{
"Country": "Barbados",
"CountryCode": "BB",
"Slug": "barbados",
"NewConfirmed": 0,
"TotalConfirmed": 75,
"NewDeaths": 0,
"TotalDeaths": 5,
"NewRecovered": 2,
"TotalRecovered": 19,
"Date": "2020-04-21T03:35:46Z"
},
{
"Country": "Belarus",
"CountryCode": "BY",
"Slug": "belarus",
"NewConfirmed": 1485,
"TotalConfirmed": 6264,
"NewDeaths": 4,
"TotalDeaths": 51,
"NewRecovered": 20,
"TotalRecovered": 514,
"Date": "2020-04-21T03:35:46Z"
},
{
"Country": "Belgium",
"CountryCode": "BE",
"Slug": "belgium",
"NewConfirmed": 1487,
"TotalConfirmed": 39983,
"NewDeaths": 145,
"TotalDeaths": 5828,
"NewRecovered": 138,
"TotalRecovered": 8895,
"Date": "2020-04-21T03:35:46Z"
},
{
"Country": "Belize",
"CountryCode": "BZ",
"Slug": "belize",
"NewConfirmed": 0,
"TotalConfirmed": 18,
"NewDeaths": 0,
"TotalDeaths": 2,
"NewRecovered": 0,
"TotalRecovered": 2,
"Date": "2020-04-21T03:35:46Z"
},
{
"Country": "Benin",
"CountryCode": "BJ",
"Slug": "benin",
"NewConfirmed": 19,
"TotalConfirmed": 54,
"NewDeaths": 0,
"TotalDeaths": 1,
"NewRecovered": 9,
"TotalRecovered": 27,
"Date": "2020-04-21T03:35:46Z"
},
{
"Country": "Bermuda",
"CountryCode": "BM",
"Slug": "bermuda",
"NewConfirmed": 0,
"TotalConfirmed": 0,
"NewDeaths": 0,
"TotalDeaths": 0,
"NewRecovered": 0,
"TotalRecovered": 0,
"Date": "2020-04-21T03:35:46Z"
},
{
"Country": "Bhutan",
"CountryCode": "BT",
"Slug": "bhutan",
"NewConfirmed": 0,
"TotalConfirmed": 5,
"NewDeaths": 0,
"TotalDeaths": 0,
"NewRecovered": 0,
"TotalRecovered": 2,
"Date": "2020-04-21T03:35:46Z"
},
{
"Country": "Bolivia",
"CountryCode": "BO",
"Slug": "bolivia",
"NewConfirmed": 44,
"TotalConfirmed": 564,
"NewDeaths": 1,
"TotalDeaths": 33,
"NewRecovered": 0,
"TotalRecovered": 31,
"Date": "2020-04-21T03:35:46Z"
},
{
"Country": "Bosnia and Herzegovina",
"CountryCode": "BA",
"Slug": "bosnia-and-herzegovina",
"NewConfirmed": 24,
"TotalConfirmed": 1309,
"NewDeaths": 1,
"TotalDeaths": 49,
"NewRecovered": 34,
"TotalRecovered": 381,
"Date": "2020-04-21T03:35:46Z"
},
{
"Country": "Botswana",
"CountryCode": "BW",
"Slug": "botswana",
"NewConfirmed": 0,
"TotalConfirmed": 20,
"NewDeaths": 0,
"TotalDeaths": 1,
"NewRecovered": 0,
"TotalRecovered": 0,
"Date": "2020-04-21T03:35:46Z"
},
{
"Country": "Bouvet Island",
"CountryCode": "BV",
"Slug": "bouvet-island",
"NewConfirmed": 0,
"TotalConfirmed": 0,
"NewDeaths": 0,
"TotalDeaths": 0,
"NewRecovered": 0,
"TotalRecovered": 0,
"Date": "2020-04-21T03:35:46Z"
},
{
"Country": "Brazil",
"CountryCode": "BR",
"Slug": "brazil",
"NewConfirmed": 2089,
"TotalConfirmed": 40743,
"NewDeaths": 125,
"TotalDeaths": 2587,
"NewRecovered": 0,
"TotalRecovered": 22130,
"Date": "2020-04-21T03:35:46Z"
},
{
"Country": "British Indian Ocean Territory",
"CountryCode": "IO",
"Slug": "british-indian-ocean-territory",
"NewConfirmed": 0,
"TotalConfirmed": 0,
"NewDeaths": 0,
"TotalDeaths": 0,
"NewRecovered": 0,
"TotalRecovered": 0,
"Date": "2020-04-21T03:35:46Z"
},

Here is my code the one provided by the api using node.js这是我的代码,由 api 使用 node.js 提供

var request = require('request');
var axios = require('axios')
var options = {
    'method': 'GET',
    'url': 'https://api.covid19api.com/summary',
    'headers': {

    }
};
request(options, function (error, response) {
    if (error) throw new Error(error);
    console.log(JSON.parse(response.body.countries));
});

You can do this way.你可以这样做。 mistake was countries its Countries错误是countries它的Countries

request(options, function (error, response) {
    if (error) throw new Error(error);
    let body= JSON.parse(response.body)
    console.log(body['Countries']);
});

using fetch()使用fetch()

let url = 'https://api.covid19api.com/summary';
let response = await fetch(url);
let commits = await response.json(); 
console.log(commits['Countries'])

you can use array filter/find for that,您可以为此使用数组过滤器/查找,

request(options, function (error, response) {
    if (error) throw new Error(error);
    let body= JSON.parse(response.body)
    // i wanna find British data
    const british = body.Countries.find( (value) => value.CountryCode =='IO');
    console.log(british)
});

here is working example这是工作示例

var request = require('request');
var axios = require('axios')
var options = {
    'method': 'GET',
    'url': 'https://api.covid19api.com/summary',
    'headers': {

    }
};
request(options, function (error, response) {
    if (error) throw new Error(error);
    let body= JSON.parse(response.body)
    // i wanna find British data
    const british = body.Countries.find( (value) => value.CountryCode =='IO');
    console.table(british)
});

Btw why using request if you can just use axios ?` using axios is more simple i think顺便说一句,如果你可以只使用axios为什么使用request ?`我认为使用 axios 更简单

axios.get('https://api.covid19api.com/summary')
.then(response=>{
    let countries = response.data.Countries;
    const british =countries.find( (value) => value.CountryCode =='IO');
    console.table(british)
})
.catch(function (error) {
    console.log(error);
})

You can find the specific country by using the loop because Countries is in array !!!您可以使用循环找到特定国家,因为国家在数组中!

 const data = { "Global": { "NewConfirmed": 70871, "TotalConfirmed": 2470922, "NewDeaths": 4940, "TotalDeaths": 169952, "NewRecovered": 21835, "TotalRecovered": 645094 }, "Countries": [ { "Country": "ALA Aland Islands", "CountryCode": "AX", "Slug": "ala-aland-islands", "NewConfirmed": 0, "TotalConfirmed": 0, "NewDeaths": 0, "TotalDeaths": 0, "NewRecovered": 0, "TotalRecovered": 0, "Date": "2020-04-21T03:35:46Z" }, { "Country": "Afghanistan", "CountryCode": "AF", "Slug": "afghanistan", "NewConfirmed": 30, "TotalConfirmed": 1026, "NewDeaths": 3, "TotalDeaths": 36, "NewRecovered": 4, "TotalRecovered": 135, "Date": "2020-04-21T03:35:46Z" }, { "Country": "Albania", "CountryCode": "AL", "Slug": "albania", "NewConfirmed": 22, "TotalConfirmed": 584, "NewDeaths": 0, "TotalDeaths": 26, "NewRecovered": 13, "TotalRecovered": 327, "Date": "2020-04-21T03:35:46Z" }, { "Country": "Algeria", "CountryCode": "DZ", "Slug": "algeria", "NewConfirmed": 89, "TotalConfirmed": 2718, "NewDeaths": 9, "TotalDeaths": 384, "NewRecovered": 52, "TotalRecovered": 1099, "Date": "2020-04-21T03:35:46Z" }, { "Country": "American Samoa", "CountryCode": "AS", "Slug": "american-samoa", "NewConfirmed": 0, "TotalConfirmed": 0, "NewDeaths": 0, "TotalDeaths": 0, "NewRecovered": 0, "TotalRecovered": 0, "Date": "2020-04-21T03:35:46Z" }] } /* for(const i = 0; i<=data.length; i ++ ){ if(data.Countries[i].Country === 'ALA Aland Islands') console.log(data.Countries[i]) }*/ console.log(data.Countries[0].Country)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM