首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对于DRYing JSON,有什么众所周知的方法吗?

对于DRYing JSON,有什么众所周知的方法吗?
EN

Stack Overflow用户
提问于 2012-12-30 15:21:51
回答 5查看 1.2K关注 0票数 25

考虑以下JSON响应:

代码语言:javascript
复制
[{
    Name: 'Saeed',
    Age: 31
}, {
    Name: 'Maysam',
    Age: 32
}, {
    Name: 'Mehdi',
    Age: 27
}]

这对于少量数据很有效,但是当您想要服务大量数据(例如数千条记录)时,以某种方式防止这些属性名称在响应JSON中重复似乎是合乎逻辑的。

我用谷歌搜索了这个概念(DRYing JSON),令我惊讶的是,我没有找到任何相关的结果。当然,一种方法是使用简单的自制算法压缩JSON,并在使用它之前在客户端上解压缩它:

代码语言:javascript
复制
[['Name', 'Age'], 
['Saeed', 31], 
['Maysam', 32], 
['Mehdi', 27]]

然而,最佳实践将比每个开发人员都试图重新发明轮子要好。你们有没有看到一个广为人知、广为接受的解决方案?

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-12-30 15:31:09

一种解决方案称为hpack算法。

https://github.com/WebReflection/json.hpack/wiki

票数 10
EN

Stack Overflow用户

发布于 2012-12-30 15:53:11

首先,JSON并不是表示数据的最紧凑的方式。它意味着可以直接解析为javascript数据结构,无需进一步解析即可使用。如果您希望优化大小,那么您可能不希望使用自描述JSON,并且需要允许您的代码对如何处理数据做出一系列假设,并在接收端使用和执行一些手动解析。正是这些假设和额外的编码工作可以节省您的空间。

如果代码已经知道服务器响应的属性名称和格式,则只需将数据作为交替值数组返回即可:

代码语言:javascript
复制
['Saeed', 31, 'Maysam', 32, 'Mehdi', 27]

或者,如果假定名称不包含逗号是安全的,您甚至可以只返回一个逗号分隔的字符串,您可以将其拆分成片段并粘贴到您自己的数据结构中:

代码语言:javascript
复制
"Saeed, 31, Maysam, 32, Mehdi, 27"

或者,如果您仍然希望它是有效的JSON,您可以将该字符串放在一个数组中,如下所示,这只比我的第一个版本稍好一点,在我的第一个版本中,项本身是数组元素:

代码语言:javascript
复制
["Saeed, 31, Maysam, 32, Mehdi, 27"]

这些假设和紧凑性将更多的责任放在您自己的javascript上解析数据,但正是您开始时去掉了完整JSON的自我描述性质,才导致了它更紧凑的本质。

票数 15
EN

Stack Overflow用户

发布于 2012-12-30 15:33:39

您可以使用CSV格式而不是JSON,因为您只需指定属性名称一次。但是,这将需要像您的示例中那样的刚性结构。

JSON实际上不是那种适合干的东西,因为考虑到您可以用它做什么,它已经打包得很好了。就我个人而言,我对JSON数据使用了裸数组,这些数据存储在一个文件中供以后使用,但是对于简单的AJAX请求,我只是让它保持原样。

DRY通常指的是您自己编写的内容,所以如果您的对象是动态生成的,那么您无论如何都不应该担心它。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14089022

复制
相关文章

相似问题

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