此文严格按照W3C规范和部分实际项目可读性,浏览器加载,性能等众多属性权衡,做出平时前端编码规范
文档。供广大web工作者参考并实施,对维护和项目扩展升级都能省时省力。
场景:前后端分离 异步利用JSON 传输数据;
E-JSON数据传输标准
简介
E-JSON的设计目标是使业务系统向浏览器端传递的JSON数据保持一致,容易被理解和处理,并兼顾传输的数据量。E-JSON依托于http协议(rfc2616)与JSON数据交换格式(rfc4627)。
JSON数据类型
JSON(JavaScript Object Notation)是一种轻量级,基于文本,语言无关的数据交换格式。其包括了基本数据类型4种和复合数据类型2种,共6种数据类型。在下面章节中,JSON数据类型的表示法为JSON+空格+数据类型,如:JSON Array。
传输的数据,包括对象属性以及数组成员, 必须(MUST) 是6种JSON数据类型之一。 杜绝(MUST NOT) 使用function、Date等js对象类型。
基本数据类型
- Number可以表示整数和浮点数。
- Boolean可以表示真假,值为true或false。
- String表示一个字符串。
- Null通常用于表示空对象。
"true"和true,这两个数据代表的是不同的数据类型。非字符串类型数据输出时一定 不要(MUST NOT) 为两端加上双引号,否则可能产生不希望的后果(如if中判断"false"的结果是true)。其他容易产生错误的例子如:0和"0"等。
复合数据类型
Object是无序的集合,以键值对的方式保持数据。一个Object中包含零到多个name/value的数据,数据间以逗号(,)分隔。name为String类型,value可以是任意类型的数据。
Object的最后一个元素之后一定 不要(MUST NOT) 加上分隔符的逗号,否则可能导致解析出错。
Array(数组)为多个值的有序集合,数组元素间以逗号(,)分隔。
http响应头
status
http响应的status 必须(MUST) 为200。通常JSON数据被用于通过XMLHttpRequest对象访问,通过javascript进行处理。返回错误的状态码可能导致错误不被响应,数据不被处理。
Content-Type
Content-Type字段定义了响应体的类型。一般情况下,浏览器会根据该类型对内容进行正确的处理。对于传输JSON数据的响应,Content-Type 推荐(RECOMMENDED) 设置为"text/javascript"或"text/plain"。 避免(MUST NOT) 将Context-Type设置为text/html,否则可能导致安全问题。
Content-Type中可以指定字符集。通常 需要(SHOULD) 明确指定一个字符集。如果是通过XMLHTTPRequest请求的数据,并且字符编码为UTF-8时,可以不指定字符集。
Context-Type示例
text/javascript;charset=UTF-8
数据字段
返回的数据包含在http响应体中。数据 必须(MUST) 是一个JSON Object。该Object可能包含3个字段:status,statusInfo,data。
status
status字段 必须(MUST) 是一个不小于0的JSON Number整数,表示请求的状态。这个字段 可以(SHOULD) 被省略,省略时和为0时表示同一含义。
0:表示server端理解了请求,成功处理并返回。
非0:表示发生错误。 可以(SHOULD) 根据错误类型扩展错误码。