访问带有月份数字的嵌套 JSON

我有一个包含每月值的 json 文件。我需要访问这些。我无法存档此内容。也许我只是犯了一个错误。


{"sales":

  {

    "total_sales":"999.99",

    "totals":

       {

         "2020-10-01":

             {

               "sales":"9.99",

             }

       }

  }

}

我怎样才能从第二个“销售”中获得 9.99 的价值?


我使用JS来获取total_sales。这有效。


为此我真的需要你的帮助。


为了更清楚起见:JSON 文件是 Woocommerce 的原始文件。


我用原来的API实现Json,需要每个月的销售额。


我已经用 Object.keys 尝试过了,但它不起作用。我只得到 (2020-01-01) 名称,但没有得到嵌套值。


www说
浏览 113回答 1
1回答

万千封印

因此,假设您有变量名为 salesReport 的数据,如下所示:{  "sales": {    "totals": {      "2015-01-18": {        "sales": "-17.00",      },      "2015-01-21": {        "sales": "597.10",      },      "2015-02-18": {        "sales": "32.00",      },      "2015-03-12": {        "sales": "22.00",      },    },  }}然后,您希望访问每个日期的 sales.totals 数据,而无需知道关键详细信息。此外,如果您需要存储密钥(在本例中为日期)及其各自的值,那么您可以首先使用Object.entries将它们转换为条目,如以下代码所示:const salesReportTotalsEntries = Object.entries(salesReport.sales.totals);然后您可以使用以下命令访问每个日期的销售数据salesReportTotalsEntries[0][1].salessalesReportTotalsEntries[1][1].sales最后一步是,您可以使用Array.reduce根据每个月的数据对每个总销售数据进行求和。这是完整的代码:const salesReport = {  "sales": {    "totals": {      "2015-01-18": {        "sales": "-17.00",      },      "2015-01-21": {        "sales": "597.10",      },      "2015-02-18": {        "sales": "32.00",      },      "2015-03-12": {        "sales": "22.00",      },    },  }};const salesReportTotalsEntries = Object.entries(salesReport.sales.totals);const salesReportTotalsByMonths = salesReportTotalsEntries.reduce((a, v) => {  const currentMonth = v[0].split('-')[1];  if (!a[currentMonth]) {    a[currentMonth] = Number(v[1].sales);    return a;  }  a[currentMonth] += Number(v[1].sales);  return a;}, {});console.log(`Total Sales Report in January is ${salesReportTotalsByMonths['01']}`);console.log(`Total Sales Report in February is ${salesReportTotalsByMonths['02']}`);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript