【问题标题】:Parsing a array from a JSON file [duplicate]从 JSON 文件解析数组 [重复]
【发布时间】:2020-09-30 12:48:07
【问题描述】:

我正在尝试用 JS 解析 JSON,有一个数组,但没有按预期工作。我的程序中有其他 API,我已经处理过。这是数据

{
  "cases": {
    "6/5/20": 6774904,
    "6/6/20": 6901877,
    "6/7/20": 7015312,
    "6/8/20": 7119002,
    "6/9/20": 7236054
  },
  "deaths": {
    "6/5/20": 396204,
    "6/6/20": 400051,
    "6/7/20": 402792,
    "6/8/20": 406543,
    "6/9/20": 411436
  },
  "recovered": {
    "6/5/20": 2961441,
    "6/6/20": 3032630,
    "6/7/20": 3087135,
    "6/8/20": 3238065,
    "6/9/20": 3319551
  }
}

我使用的代码在这里。

    const response = await fetch("https://disease.sh/v2/historical/all?lastdays=5");
    const data = await response.json();
    var casesH = data.cases[0];

    msg.channel.send(casesH);
    console.log(casesH);

有谁知道我可能做错了什么或该怎么做?

谢谢

【问题讨论】:

  • 您正尝试像访问数组一样访问您的数据。它不是,它是一个对象,所以你必须按键访问它。 data.cases["6/5/20"]
  • 您的问题中没有数组,只有对象。如果您不知道或不关心密钥,也许您想要Object.values()

标签: javascript json discord.js


【解决方案1】:

简单。这不是一个数组,它是一个具有三个属性的对象:casesdeathsrecovered。这些属性中的每一个本身就是一个对象。要获取案例,您希望像这样索引:

const data = await fetch(`url`).then(res => res.json());

const cases = data['cases'];

或者,您应该可以使用ES6 destructuring

const { cases, deaths, recovered } = await fetch(`url`).then(res => res.json());

【讨论】:

    【解决方案2】:

    JSON 不是数组,应该是

    {
    "cases": [
        "6/5/20": 6774904,
        "6/6/20": 6901877,
        "6/7/20": 7015312,
        "6/8/20": 7119002,
        "6/9/20": 7236054
      ],
      "deaths": [
        "6/5/20": 396204,
        "6/6/20": 400051,
        "6/7/20": 402792,
        "6/8/20": 406543,
        "6/9/20": 411436
      ],
      "recovered": [
        "6/5/20": 2961441,
        "6/6/20": 3032630,
        "6/7/20": 3087135,
        "6/8/20": 3238065,
        "6/9/20": 3319551
      ]
    }
    

    【讨论】:

    • 我觉得 OP 可能无法更改数据格式
    • 这不是正确的 JSON 语法。您不能拥有具有 key: 'value' 属性的数组。这就是对象的用途。
    • 对不起,我只是意识到它不是一个数组,哈哈。我应该如何单独列出日期?
    猜你喜欢
    • 2016-03-28
    • 2012-02-14
    • 1970-01-01
    • 1970-01-01
    • 2021-07-14
    • 2013-02-28
    • 2015-08-16
    • 2017-02-03
    • 1970-01-01
    相关资源
    最近更新 更多