JSON
来源:互联网 发布:淘宝线下推广计划 编辑:程序博客网 时间:2024/06/06 18:47
JSON是一种轻量级的数据格式,不是一种编程语言。虽然JSON与JavaScript具有相同得语法形式,但是JSON并不属于JavaScript。很多编程语言都可使用JSON,都有JSON的解析器和序列化器。
一:语法
- 简单值
表示数值:8
表示字符串:“Hello Word”
注:字符串必须是双引号,区别JavaScript - 对象
{ "Name":"shuang", "age":18 "school":{ "Name":"langyuan", "location":"beijing" }}
注:
- 可看出对象中嵌套了一个对象,且具有相同的属性名,因为两个Name分别在不同的对象中,所以可以相同
- 数字不需要“”
- 没有变量声明
- 末尾没有分号
- 属性名必须加“”双引号
3. 数组
["shuang"、18、"langyuan"]
对象和数组结合
{ "title":"JavaScript", "authors":["Peter","Jon"], "year":2008}
二:解析与序列化
序列化
:将JavaScript对象序列化为JSON字符串,用JSON.stringify()函数实现
用法:
- 1个参数
- 2个参数,实现过滤结果,替换(过滤)函数replacer实现
- 3个参数,字符串缩进(第三个是数字,不得大于10,大于10默认是10;如果不是数字,则这个字符串将在JSON字符串中用作字符)
var book={ title:"JavaScript", authors:["Peter","Jon"], year:2008}
序列化:
var jsonBook=JSON.stringify(book,["title","year"],"----");
或
var jsonBook=JSON.stringify(book,function(key,value){ switch(key){ case "title": return value case "authors": return undefined default: return value }},"----");
(使用undefined实现过滤)
保存在jsonBook中的字符串为:
var book={----"title":"JavaScript",----"year":2008}
有时JSON.stringify()还是不能满足某些对象的序列化,可通过toJSON()
方法,返回其自身的JSON数据格式。可为任何对象添加toJSON()方法,返回任何序列化的值。
var book={ title:"JavaScript", authors:["Peter","Jon"], year:2008, toJSON:function(){ return this.title; }}
var jsonBook=JSON.stringify(book);
以上返回book对象的title属性值
序列化对象的次序:
- 若存在toJSON(),则调用该方法取得有效值,否则按顺序执行序列化
- 若提供第二个参数,应用函数过滤器,传入函数过滤器的值是第1步返回的值
- 对第2步返回的每个值进行相应的序列化
- 若提供第3个参数,对返回值进行格式化
解析
:把JSON字符串解析为原生JavaScript值,用JSON.parse()函数实现
将日期字符串转换为Date对象时,经常用到还原函数
用法:
可接收2个参数,第二个参数称为还原函数reviver,此函数也接收两个参数,键key和值value将日期字符串转换为Date对象时,经常用到还原函数
var book={ title:"JavaScript", authors:["Peter","Jon"], year:2008, releaseDate:new Date(1995,8,8)}
解析
var jsonBook=JSON.stringify(book);var bookCopy=JSON.parse(jsonBook,function(key,value){ if(key=="releaseDate"){ return new Date(value); }else{ return value; } });
可以使用以下代码查看releaseDate的值
alert(bookCopy.releaseDate.getFullYear());
以上代码注释:
先为book对象添加releaseDate属相,该属性保存着Date对象,这个对象经序列化后变为JSON字符串,后有被解析还原为Date对象。还原函数遇到“releaseDate”键时,会创建一个新的Date对象保存在bookCopy.releaseDate属相中,正因为是保存的对象,所以能调用getFullYear()方法
【拓】
文章开头提到了一个词,轻量级的数据结构,那么什么是轻量级那,我理解的就是结构简单或使用简单,但功能强大。咱是还没找到准确答案,若你有更好的解析,请在下方给我留言哟
- Json
- JSON
- JSON
- JSON
- json
- JSON
- JSON
- json
- Json
- json
- JSON
- json
- json
- JSON
- json
- JSON
- JSON
- json
- 百度地图marke
- 二、基于Cortex-A8和ZigBee技术的智能家居监控系统的设计与实现
- Android图片处理框架之Picasso学习使用
- C# Post Json数据
- ptrace注入游戏介绍
- JSON
- ReenrantLock
- AIDL和Binder图解
- [DP套DP] HDU5079: Square
- 操作系统
- Boosst.assert库的简单尝试
- 考研英语
- sql server 使用循环和临时表处理数据 而不用游标
- 600X笔记 (week-5 效率与增长量级 内存与查找)