JSON语法及JSON定义规范化
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://www.cnblogs.com/zhuhui-site/p/10090541.html
一、前言
JSON(JavaScript Object Notation, JS对象标记) 是一种轻量级的数据交换格式。它是基于 ECMAScript 的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。
二、JSON 语法规则
在 JS 语言中,一切都是对象。因此,任何支持的类型都可以通过 JSON 来表示,例如字符串、数字、对象、数组等。但是对象和数组是比较特殊且常用的两种类型:
- 对象表示为键值对
- 数据由逗号分隔
- 花括号保存对象
- 方括号保存数组
JSON 是 JS 对象的字符串表示法,它使用文本表示一个 JS 对象的信息,本质是一个字符串。JSON 和 JS 对象可以互转。
- JS对象 –> JSON 字符串,使用 JSON.stringify() 方法:
var json = JSON.stringify({a: 'Hello', b: 'World'}); // 结果是 '{"a": "Hello", "b": "World"}'
- JSON 字符串 –> JS对象,使用 JSON.parse() 方法:
var obj = JSON.parse('{"a": "Hello", "b": "World"}'); // 结果是 {a: 'Hello', b: 'World'}
三、和XML的比较
1、实例比较
- 用XML表示中国部分省市数据如下:
<?xml version="1.0" encoding="utf-8"?>
<country>
<name>中国</name>
<province>
<name>黑龙江</name>
<cities>
<city>哈尔滨</city>
<city>大庆</city>
</cities>
</province>
<province>
<name>广东</name>
<cities>
<city>广州</city>
<city>深圳</city>
<city>珠海</city>
</cities>
</province>
<province>
<name>台湾</name>
<cities>
<city>台北</city>
<city>高雄</city>
</cities>
</province>
<province>
<name>新疆</name>
<cities>
<city>乌鲁木齐</city>
</cities>
</province>
</country>
- 用JSON表示如下:
{
"name": "中国",
"province": [
{
"name": "黑龙江",
"cities": {
"city": [
"哈尔滨",
"大庆"
]
}
},
{
"name": "广东",
"cities": {
"city": [
"广州",
"深圳",
"珠海"
]
}
},
{
"name": "台湾",
"cities": {
"city": [
"台北",
"高雄"
]
}
},
{
"name": "新疆",
"cities": {
"city": [
"乌鲁木齐"
]
}
}
]
}
可以看到,JSON 简单的语法格式和清晰的层次结构明显要比 XML 容易阅读,并且在数据交换方面,由于 JSON 所使用的字符要比 XML 少得多,可以大大得节约传输数据所占用得带宽。
四、标准JSON格式定义
虽然在JSON并没有特殊的格式要求,但是在实践过程中,JSON有比较认可的格式规范:
- JSON格式的定义一般遵循如下规范:
{
"status": // 接口访问成功或者失败的状态码
"message": // 接口访问错误的时候返回的错误提示文字,访问成功的时候为空字符串
"data":{ // 服务端实际返回的数据
}
}
- 请求接口失败的例子
{
"status": "1",
"message": "您尚未登录,请登录后继续操作"
}
- 请求接口成功的例子
{
"status": "0",
"message": "",
"data": {
"userId": "1",
"username": "zhangsan",
"worklist": [
{
"workId": "1",
"workname": "完成登陆界面设计"
},
{
"workId": "2",
"workname": "完成用户中心功能编码"
}
]
}
}
五、JSON 工具
- [x] JSON在线解析及格式化验证
- [x] 格式化工具
- [x] JSON-XML互转
六、参考资料
- [x] JSON_百度百科