首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何用JSON表示表格数据?

如何用JSON表示表格数据?
EN

Stack Overflow用户
提问于 2011-05-02 22:49:45
回答 5查看 16.6K关注 0票数 39

我正在编写一个API,用于通过JSON从连接JDBC的Java中检索数据。我选择使用JSON,因为我们希望对浏览器中的数据进行排序和其他操作,并且我们将从跨域访问数据。

由于我实际上是在JavaScript中执行SQL查询,所以返回的数据本质上是表格式的。我开始这样写,这样您就可以得到列标签的列表,然后是值数组,例如:

代码语言:javascript
复制
{
  "columns": [
    "given_name",
    "surname",
  ],
  "results": [
    [
      "Joe",
      "Schmoe"
    ],
    [
      "Jane",
      "Doe"
    ]
  ]
}

但是,当我开始编写JavaScript来处理返回的数据时,我想知道用键/值对输出结果是否更好,例如:

代码语言:javascript
复制
{
  "results": [
    {
      "given_name": "Joe",
      "surname": "Schmoe"
    },
    {
      "given_name": "Jane",
      "surname" : "Doe"
    }
  ]
}

如果你要返回大量的结果,那就是大量的重复文本。但我们将传输压缩,所以我不太关心带宽。

基本上,我应该设计这个,以便访问我的数据

代码语言:javascript
复制
$.getJSON(query, function(data) {
  var columns = data.columns;
  var results = data.results;
  $.each(results, function(key, row) {
    console.log(row[columns.indexOf('surname')]);
  });
});

或者更漂亮的

代码语言:javascript
复制
$.getJSON(query, function(data) {
  var results = data.results;
  $.each(results, function(key, row) {
    console.log(row.surname);
  });
});

本质上,我想知道对性能的潜在影响是否证明后一种选择的语法更加简洁。

跟进

我确实实现了它的方式和个人资料。分析是一个很好的主意!性能上的差异是微不足道的。数据传输大小的差异是很大的,但是对于Gzip压缩,格式和格式之间的差异在很大的数据集和非常小的数据集之间下降到5-6%。所以我要说的是更漂亮的实现。对于这个特定的应用程序,我可以期望所有客户端都支持Gzip/Deflate,因此大小并不重要,而且客户机和服务器上的计算复杂度都非常相似,因此无关紧要。

对于任何感兴趣的人,这里是my data with graphs

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-05-03 00:05:13

综合其他答案:

您的有线格式不必与内存中的format.

  • Profile相同,这更好--看看它是否使difference.

  • Simpler开始时更好。

此外:

  • 如果您只有一页的结果,并且用户很少,那么第二种格式可能不会比第一种格式更糟糕。如果您的数据非常稀疏,那么第二种格式很可能更好。如果您正在发送1000个或几行数据,并且您有数百万用户,那么您发送的数据的大小可能会开始重要,也许第一种格式可能会有所帮助。
  • 您不能保证所有用户代理都支持gzip /放气,所以请记住这一点。

票数 10
EN

Stack Overflow用户

发布于 2011-05-02 23:11:21

都是侧写。之后再进行优化。

票数 11
EN

Stack Overflow用户

发布于 2016-07-25 14:30:42

只是另一个JSON结构,我从中得到了非常好的结果:

代码语言:javascript
复制
{
    "recordCount": 2,
    "data": {
        "Id": [1, 2],
        "Title": ["First record", "Second record"],
        "Value": [18192, 18176]
    }
}

遍历所有数据:

代码语言:javascript
复制
for (var i = 0; i < recordSet.recordCount; ++i) {
    console.log("Record " + i.toString() + ":");
    for (var field in recordSet.data)
        console.log("\t" + field + ": " + recordSet.data[field][i].toString());
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5863304

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档