Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 访问带有月号的嵌套JSON_Javascript_Json_Variables - Fatal编程技术网

Javascript 访问带有月号的嵌套JSON

Javascript 访问带有月号的嵌套JSON,javascript,json,variables,Javascript,Json,Variables,我得到了一个带有每月值的json文件。我需要访问这些。我无法将此存档。也许我只是犯了个错误 {"sales": { "total_sales":"999.99", "totals": { "2020-10-01": { "sales":"9.99",

我得到了一个带有每月值的json文件。我需要访问这些。我无法将此存档。也许我只是犯了个错误

{"sales":
  {
    "total_sales":"999.99",
    "totals":
       {
         "2020-10-01":
             {
               "sales":"9.99",
             }
       }
  }
}
如何从9.99的第二次“销售”中获得价值

我使用JS获得总销售额。这很有效

我真的需要你的帮助


更清楚地说: JSON文件是Woocommerce的原始文件

我使用原始API实现Json,并且需要每月的销售额

我已经用Object.keys尝试过了,但不起作用。我只获取(2020-01-01)名称,而不获取嵌套值

以下是关于原始JSON文件的信息:

糟糕的是日期字符串作为键


也许有一种棘手的方法来存档结果。

因此,假设您有变量名为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数据,而不必知道关键细节。此外,如果需要存储密钥(在本例中为日期)及其各自的值,则可以首先使用以下代码中的as将其转换为条目:

const salesReportTotalsEntries = Object.entries(salesReport.sales.totals);
然后,您可以使用访问每个日期的销售数据

salesReportTotalsEntries[0][1].sales
salesReportTotalsEntries[1][1].sales
最后一步是,您可以使用根据每个月的数据对每个totals sales数据求和。以下是完整的代码:

const salesReport={
“销售”:{
“总数”:{
"2015-01-18": {
“销售”:“-17.00”,
},
"2015-01-21": {
“销售”:“597.10”,
},
"2015-02-18": {
“销售”:“32.00”,
},
"2015-03-12": {
“销售”:“22.00”,
},
},
}
};
const salesReportTotalsEntries=Object.entries(salesReport.sales.totals);
const salesReportTotalsByMonths=salesReportTotalsEntries.reduce((a,v)=>{
常量currentMonth=v[0]。拆分('-')[1];
如果(!a[currentMonth]){
a[currentMonth]=编号(v[1]。销售);
返回a;
}
a[currentMonth]+=编号(v[1]。销售);
返回a;
}, {});
log(`1月份的总销售报告为${salesReportTotalsByMonths['01']}`);

log(`2月份的总销售报告为${salesReportTotalsByMonths['02']}`)这是否回答了您的问题@贾雷德史密斯-这似乎是另一个“我有一个可怕的数据结构”请帮助我搜索它。OP的问题可能是日期字符串是关键。@RandyCasburn是的,可能是。这是(间接地)在链接的DUP中被覆盖的,所以…欢迎来到Stackoverflow。请拿着这个(并得到一个徽章)。你的问题缺乏任何独自解决这个问题的尝试。这个想法是让你试着做些事情,然后带着你无法解决的具体问题来到这里。在帮助中心进行参观和阅读将提供您所需的所有信息。格式为原始JSOn文件。所以我不知道如何获取数字变量来捕捉子值。工作起来很有魅力。非常感谢你。有没有办法用点代替逗号?我已经试过替换(“.”,“,”)。但它不起作用并抛出一个错误。嗨@Oliver,如果这个答案解决了您的问题,请不要忘记将这个答案标记为已接受:)