【发布时间】:2011-05-02 22:49:45
【问题描述】:
我正在编写一个 API,用于通过 JSON 从连接 JDBC 的 Java Servlet 中检索数据。我选择使用 JSON 是因为我们希望对浏览器中的数据进行排序和其他操作,并且我们将跨域访问数据。
由于我本质上是在 JavaScript 中执行 SQL 查询,因此返回的数据本质上是表格的。我开始写这个是为了让你得到一个列标签列表,然后是值数组,例如:
{
"columns": [
"given_name",
"surname",
],
"results": [
[
"Joe",
"Schmoe"
],
[
"Jane",
"Doe"
]
]
}
但是当我开始编写 JavaScript 来处理返回的数据时,我想知道用键/值对输出结果是否会更好,例如:
{
"results": [
{
"given_name": "Joe",
"surname": "Schmoe"
},
{
"given_name": "Jane",
"surname" : "Doe"
}
]
}
如果您要返回大量结果,那就是大量重复的文本。但是我们将传输 gzipped,所以我不太关心带宽。
基本上,我应该对此进行设计,以便我可以使用
$.getJSON(query, function(data) {
var columns = data.columns;
var results = data.results;
$.each(results, function(key, row) {
console.log(row[columns.indexOf('surname')]);
});
});
或者更漂亮的
$.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!。
【问题讨论】:
标签: javascript jquery json