###1. json是一种与语言无关的数据交换的格式,其主要作用:
1)使用ajax进行前后台数据交换
2)移动端与服务端的数据交换
###2.json有三种类型:
1)对象:{"key1":obj,"key2":obj,"key3":obj...}
例如:user对象 用json数据格式表示
{"username":"zhangsan","age":28,"password":"123","addr":"北京"}
2)数组:[obj,obj,obj...]
List<Product> 用json数据格式表示
[{"pid":"10","pname":"小米4C"},{},{}]
3)简单值: 字符串·数值·布尔值和null
注意:对象格式和数组格式可以互相嵌套
注意:json的key是字符串 json的value是Object
###3. json数据的解析与序列化
1) JSON对象 转 JS对象 (解析)
js: JSON.parse()
jQ: $.parseJSON() / $.parse()
2) JS对象转JSON对象(序列化)
js: JSON.stringify(obj)
jQ:$.stringify(obj)
stringify()含两个参数,第一个参数是一个过滤器,可以使一个数组或函数;第二个参数是一个选项,表示是否在JSON字符串中保留缩进
eg:
var book = {
"title" : "abc",
"edition" : 3,
"year" : 2011
}
var jsonText = JSON.stringify(book,["title","year"]);
结果为: {"titile":"abc","year":2011}
若第二个参数为函数,则该函数需接受两个参数,属性(键)名和属性值 即key 和value
eg:
var book = {
"title" : "abc",
"edition" : 3,
"abc": [
"abc 123"
]
}
var jsonText = JSON.stringify(book,function(key,value){
switch(key){
case "title":
return undefined;
case "edition":
return 20;
case "abc":
return value.join(",") //join() 方法用于把数组中的所有元素放入一个字符串。元素是通过指定的分隔符进行分隔的。
defalut:
return value;
}
});
输出结果为:{"edition":20,"abc":"abc 123"}
3.)字符串缩进
JSON.stringify()方法的第三个参数用于控制结果中的缩进和空白符,表示的是每个级别缩进的空格数或指定字符作为缩进符。 作用是方便程序员阅读
var jsonText = JSON.stringify(book,null,4)
输出结果:{
"titile":"abc",
......
"abc":[
"abc 123"
]
}
4.)toJSON()方法
原生Date对象有一个该方法,能将JavaScript的Date对象自动转换成ISO 8601日期字符串