JS 中的 JSON
JSON是JavaScript Object Notation的缩写,它是一种数据交换格式。
在JSON出现之前,大家一直用XML来传递数据。因为XML是一种纯文本格式,所以它适合在网络上交换数据。XML本身不算复杂,但是,加上DTD、XSD、XPath、XSLT等一大堆复杂的规范以后,任何正常的软件开发人员碰到XML都会感觉头大了,最后大家发现,即使你努力钻研几个月,也未必搞得清楚XML的规范。
终于,在2002年的一天,道格拉斯·克罗克福特(Douglas Crockford)同学为了拯救深陷水深火热同时又被某几个巨型软件企业长期愚弄的软件工程师,发明了JSON这种超轻量级的数据交换格式。
道格拉斯同学长期担任雅虎的高级架构师,自然钟情于JavaScript。他设计的JSON实际上是JavaScript的一个子集。在JSON中,一共就这么几种数据类型:
- number:和JavaScript的
number
完全一致; - boolean:就是JavaScript的
true
或false
; - string:就是JavaScript的
string
; - null:就是JavaScript的
null
; - array:就是JavaScript的
Array
表示方式——[]
; - object:就是JavaScript的
{ ... }
表示方式。
以及上面的任意组合。
并且,JSON还定死了字符集必须是UTF-8,表示多语言就没有问题了。为了统一解析,JSON的字符串规定必须用双引号""
,Object的键也必须用双引号""
。
由于JSON非常简单,很快就风靡Web世界,并且成为ECMA标准。几乎所有编程语言都有解析JSON的库,而在JavaScript中,我们可以直接使用JSON,因为JavaScript内置了JSON的解析。
把任何JavaScript对象变成JSON,就是把这个对象序列化成一个JSON格式的字符串,这样才能够通过网络传递给其他计算机。
如果我们收到一个JSON格式的字符串,只需要把它反序列化成一个JavaScript对象,就可以在JavaScript中直接使用这个对象了。
序列化
让我们先把小明这个对象序列化成JSON格式的字符串:
var xiaoming = {
name: '小明',
age: 14,
gender: true,
height: 1.65,
grade: null,
'middle-school': '\"W3C\" Middle School',
skills: ['JavaScript', 'Java', 'Python', 'Lisp']
}; JSON.stringify(xiaoming); // '{"name":"小明","age":14,"gender":true,"height":1.65,"grade":null,"middle-school":"\"W3C\" Middle School","skills":["JavaScript","Java","Python","Lisp"]}'
要输出得好看一些,可以加上参数,按缩进输出:
JSON.stringify(xiaoming, null, ' ');
结果:
{
"name": "小明",
"age": 14,
"gender": true,
"height": 1.65,
"grade": null,
"middle-school": "\"W3C\" Middle School",
"skills": [
"JavaScript",
"Java",
"Python",
"Lisp"
]
}
第二个参数用于控制如何筛选对象的键值,如果我们只想输出指定的属性,可以传入Array
:
最新文章
- 安卓手机APP压力monkey测试
- TCMalloc 安装和使用
- HTTPS背后的加密算法
- Vs注释,vsXML,VSXML注释
- GWT资料收集
- Js判断一个单词是否有重复字母
- uva 10160
- 网站常见问题及解决方法(div/css)
- android-betterpickers
- java集合简介
- 2016弱校联盟十一专场10.2——Floyd-Warshall
- lavarel5.2官方文档阅读——架构基础
- Web项目发布后字体文件找不到
- kafka系列十、kafka常用管理命令
- [UE4 ]Is Locally Controlled的局限性
- 在Windows系统上怎么使用SecureCRT链接Linux AWS EC2 -摘自网络
- mysql 中 时间和日期函数
- Linux 环境 HTTP 服务器
- 3.12 Templates -- Wrting Helpers(编写辅助器)
- Tomcat源码分析——请求原理分析(下)
热门文章
- C++ 函数部分(1)
- 深入理解Java执行时数据区
- bzoj1934: [Shoi2007]Vote 善意的投票&;&;bzoj2768:[JLOI2010]冠军调查
- vmware中鼠标在部分区域不能使用
- vs2013/2015中scanf函数类似于error C4996: 'scanf': This function or variable may be unsafe的安全检查错误
- virtualbox安装完系统之后重新启动重新进入安装界面原因
- 获取http请求的响应状态
- Linux 系统管理命令 - vmstat - 虚拟内存统计
- Jmeter压测Thrift服务接口
- 通过实现ServletContextListener接口创建数据库连接池(C3P0方式)