JavaScript: анализ объекта JSON с несколькими уровнями - PullRequest
0 голосов
/ 23 апреля 2020

У меня есть файл JSON в следующем формате:

{
  "Afghanistan": [
    {
      "date": "2020-1-22",
      "confirmed": 0,
      "deaths": 0,
      "recovered": 0
    },
    {
      "date": "2020-1-23",
      "confirmed": 0,
      "deaths": 0,
      "recovered": 0
    },
    ...
  ],
  "Albania": [
    {
      "date": "2020-1-22",
      "confirmed": 0,
      "deaths": 0,
      "recovered": 0
    },
    {
      "date": "2020-1-23",
      "confirmed": 0,
      "deaths": 0,
      "recovered": 0
    },
    ...
  ],
  ...
}

Моя цель состоит в том, чтобы извлечь данные таким образом, чтобы получить дату, подтвержденные данные о смерти и восстановлении каждой страны. У меня проблема в том, чтобы найти способ сделать это для всех стран, а не для одной.

Например, если я напишу строку data.Afghanistan[0].confirmed; //data is a variable i stored the JSON object in, чтобы получить информацию об Афганистане, мне нужно будет написать такую ​​же строку и для Албании, и для всех других стран отдельно.

I Я знаю, как я могу сделать это для всех округов более эффективным способом, но я не могу найти это. Может кто-нибудь помочь мне? Любая помощь будет оценена. Спасибо

Ответы [ 3 ]

2 голосов
/ 23 апреля 2020

Используйте Object.keys(). Например, Object.keys(yourJSONObject) вернет массив ваших ключей, т.е. ["Afghanistan", "Albania"]. Вы можете использовать это для перебора каждого ключа / значения в вашем JSON.

1 голос
/ 23 апреля 2020

Вы можете l oop через массивы внутри каждой страны в вашем файле JSON следующим образом:

for (var key in data) { 
    //key is the country ie. "Afghanistan"
    var records = data[key]; //array of records
    for (var index in records) {
        var record = records[index]; //object with the properties
        var date = record.date;
        var confirmed = record.confirmed;
        var deaths = record.deaths;
        var recovered = record.recovered;
    }
}
1 голос
/ 23 апреля 2020

Я думаю, что это будет работать:

const countries = Object.keys(data);
const confirmedDeathsByCountry = countries.map(country => data[country][0].confirmed);
...