【发布时间】:2012-10-23 23:31:34
【问题描述】:
我从 REST 调用返回了一些 JSON 数据,我想对其进行解析、添加总计,然后输出包含新数据的数组。我已经弄清楚了解析、循环和添加,并且可以在页面上写结果(见帖子:json sibling data),但我想进一步分解总数。这是我开始使用的 JSON:
{“结果集”:{ “结果”:[ { "file_size":"722694", “描述”:“描述1”, “格式”:“GIF” }, { "file_size":"19754932", “描述”:“描述1”, “格式”:“JPEG” }, { "file_size":"778174", “描述”:“描述2”, “格式”:“GIF” }, { "file_size":"244569996", “描述”:“描述1”, “格式”:“PNG” }, { "file_size":"466918", “描述”:“描述2”, “格式”:“TIFF” } ] }}我已经让它返回每个不同“desc”的总数(查看答案:https://stackoverflow.com/a/13016615/1766026),但现在我想进一步分解它并显示每个“ desc” 与每个“格式”,所以新的输出看起来像:
说明 1:444MB(222MB TIFF、111MB GIF、111MB JPEG)
说明 2:333MB(111MB PNG、111MB TIFF、111MB JPEG)
并非所有返回的项目都具有相同类型的文件格式。
(是的,我知道这些数字不是从 JSON 中加起来的 - 这只是一个示例)
我认为这可以通过将结果推送到基于匹配元素的新数组然后迭代并吐出到页面来完成。
也许新的数组/对象看起来像这样?
{ “描述”:“描述1”, "TIFF":"222", "GIF:"111", "JPEG:"111" }, { “描述”:“描述2”, "PNG":"111", "TIFF:"111", “JPEG”:“111” }我刚刚看到这个:How do I create JavaScript array (JSON format) dynamically? 我想这将是一个开始的地方?
(请原谅可能的不当术语 - 我主要从事前端工作,这种东西对我来说很新 - 礼貌的建设性批评很乐意接受)
【问题讨论】:
-
我要指出,虽然您的示例相对微不足道,但您正朝着在客户端而不是服务器上进行处理的方向发展。这可能有充分的理由,但如果可以让服务器返回聚合数据,从长远来看,它可能会为您节省一些痛苦。这就是 SQL 设计的用途,虽然它可以用其他语言完成,但如果您希望它灵活,您通常会为所有聚合场景提供大型复杂库。
-
这适用于使用自己的 REST API 来提取此类信息的 Web 应用程序。我们使用 javascript/AJAX/JSON 进行大部分页面显示。所有这些信息都可以通过 REST 获得,因此我们希望尽可能使用它。如果这最终变得太慢,我们很可能会深入到服务器端代码以吐出一些 HTML。感谢您的意见。
-
我完全理解——而且我自己也非常了解。我的 UI 人员经常最终要求
/StatsBy/DocType、/StatsBy/Author等...正是出于这个原因。无论如何,欢迎来到 SO。希望能见到你
标签: javascript jquery arrays json