JSON数据交换格式
JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
JSON是Douglas Crockford在2001年开始推广使用的数据格式,在2005年-2006年正式成为主流的数据格式,雅虎和谷歌就在那时候开始广泛地使用JSON格式。
JSON 语法规则
JSON是一个标记符的序列。这套标记符包含六个构造字符、字符串、数字和三个字面名。
JSON是一个序列化的对象或数组。
1. 六个构造字符:
begin-array = ws %x5B ws ; [ 左方括号
begin-object = ws %x7B ws ; { 左大括号
end-array = ws %x5D ws ; ] 右方括号
end-object = ws %x7D ws ; } 右大括号
name-separator = ws %x3A ws ; : 冒号
value-separator = ws %x2C ws ; , 逗号
2. 在这六个构造字符的前或后允许存在无意义的空白符(ws):
ws = *(%x20 /; 空间
%x09 /; 水平标签
%x0A /; 换行或换行
%x0D); 回程
3.JSON的值:
3.1 JSON的构成: ws 值 ws [1]
3.2值可以是对象、数组、数字、字符串或者三个字面值(false、null、true)中的一个。值中的字面值中的英文必须使用小写。
3.2.1对象由花括号括起来的逗号分割的成员构成,成员是字符串键和上文所述的值由逗号分割的键值对组成,如:
1 {“name”: “John Doe”, “age”: 18, “address”: {“country” : “china”, “zip-code”: “10000”}}
3.2.2数组是由方括号括起来的一组值构成,如:
1[3, 1, 4, 1, 5, 9, 2, 6]
3.2.3 字符串与C或者Java的字符串非常相似。字符串是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。一个字符(character)即一个单独的字符串(character string)。
3.2.4数字也与C或者Java的数值非常相似。除去未曾使用的八进制与十六进制格式。除去一些编码细节。 [2]
一些合法的JSON的实例:
1{“a”: 1, “b”: [1, 2, 3]}
1[1, 2, “3”, {“a”: 4}]
13.14
1“plain_text”
JSON 与 JS 对象的关系
很多人搞不清楚 JSON 和 JS 对象的关系,甚至连谁是谁都不清楚。其实,可以这么理解:
JSON 是 JS 对象的字符串表示法,它使用文本表示一个 JS 对象的信息,本质是一个字符串。
如
1var obj = {a: ‘Hello’, b: ‘World’}; //这是一个对象,注意键名也是可以使用引号包裹的
1var json = ‘{“a”: “Hello”, “b”: “World”}’; //这是一个 JSON 字符串,本质是一个字符串
JSON 和 JS 对象互转
要实现从JSON字符串转换为JS对象,使用 JSON.parse() 方法:
1var obj = JSON.parse(‘{“a”: “Hello”, “b”: “World”}’); //结果是 {a: ‘Hello’, b: ‘World’}
要实现从JS对象转换为JSON字符串,使用 JSON.stringify() 方法:
1var json = JSON.stringify({a: ‘Hello’, b: ‘World’}); //结果是 ‘{“a”: “Hello”, “b”: “World”}’
编辑:jq
-
数据
+关注
关注
8文章
7193浏览量
89818 -
JS
+关注
关注
0文章
78浏览量
18193 -
JSON
+关注
关注
0文章
119浏览量
7035
原文标题:JSON数据交换格式
文章出处:【微信号:worldofai,微信公众号:worldofai】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
相关推荐
配置Skywalking告警
![配置Skywalking告警](https://file1.elecfans.com/web3/M00/06/36/wKgZO2eIdk-ABPyvAAAe4LpFel4047.png)
think-cell——使用JSON数据实现自动化(二)
![think-cell——使用<b class='flag-5'>JSON</b>数据实现自动化(二)](https://file1.elecfans.com/web3/M00/04/A9/wKgZPGd3SCqAIpRXAAAwfAOo7zE220.png)
think-cell——使用JSON数据实现自动化(一)
![think-cell——使用<b class='flag-5'>JSON</b>数据实现自动化(一)](https://file1.elecfans.com/web3/M00/04/8A/wKgZPGd2JyaAF1LTAAAwCZsElnc512.png)
远程IO控制器ZLAN6808-3 使用JSON定时下发执行DO通断
![远程IO控制器ZLAN6808-3 使用<b class='flag-5'>JSON</b>定时下发执行DO通断](https://file1.elecfans.com/web1/M00/F3/C7/wKgaoWce6qGAR_ncAAFG3jQX3Zg86.jpeg)
JSON协议是什么,物联网中的RTU中如何使用JSON协议和服务器交互
![<b class='flag-5'>JSON</b>协议是什么,物联网中的RTU中如何使用<b class='flag-5'>JSON</b>协议和服务器交互](https://file1.elecfans.com//web2/M00/07/F1/wKgZombzxmuAEibqAAAaD3qYSfA535.jpg)
TestStand表达式中常用的语法规则和运算符使用
![TestStand表达式中常用的<b class='flag-5'>语法规则</b>和运算符使用](https://file1.elecfans.com/web2/M00/02/CA/wKgZoma91B2AXkxCAACWfBaqwuc637.jpg)
可以使用JSON将prov-config参数从网页发送到esp8266吗?
鸿蒙开发Ability Kit程序框架服务:FA模型切换Stage模型指导 配置文件差异
![鸿蒙开发Ability Kit程序框架服务:FA模型切换Stage模型指导 配置文件差异](https://file1.elecfans.com/web2/M00/F3/2F/wKgZomZ8B0CARNxEAAIfjY_WHyA129.jpg)
评论