我正在编写一个 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"
}
]
}
如果您要返回很多结果,那就是很多重复的文本。但我们将传输 gzip 压缩,所以我不太关心带宽。
基本上,我应该设计这个以便我访问我的数据
$.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,因此大小无关紧要,并且客户端和服务器上的计算复杂度非常相似,因此无关紧要。
对于任何感兴趣的人,这是 我的图表数据!。
原文由 Justin Force 发布,翻译遵循 CC BY-SA 4.0 许可协议
综合其他答案:
更远: