1、语法
·json的语法可以表示为以下三种类型:简单值,对象,数据
·简单值
跟JavaScript中的语法相同可以使用,数值 字符串 布尔 null 但是不支持undefined。
例如:
2,
“hellworld”
·对象
对象是一种无序的键值对。值可以是简单类型也可以是对象或数组,【注意】json对象与JavaScript对象不同:json key必须用双引号
例如:
{
"name":"hello world",
"age":18,
"shoool":["dx","xx"],
"gril":{
"name":"g",
"age":18
}
}
`数组
json中采用数组自变量形式
例如:
[2,3,4]
[
{
"name":"xm",
"age":7
},
{
"name":"xh",
"age":6
}
]
2、解析与序列化
json 可以使用evel()函数解析但是这个evel函数游风险,现在统一使用JSON对象里面的stringify()和parse()两个方法。
·stringify:
这个方法可以把对象变成字符串。
例如:
var obj = {
"name":"sky","age":30,
"company":["supermap","jidian"],
}
var objText= JSON.stringify(obj); //objText={"name":"sky","age":30,"company":["supermap","jidian"]}
stringify 可以添加两个参数第一个参数可以是数组或函数,添加数据后只显示数组内key-value
e:数组
var obj = {
"name":"sky",
"age":30,
"company":["supermap","jidian"],
}
var objText = JSON.stringify(obj,["name","age"]);
//objText = {"name":"sky","age":30}
e:函数
var obj = {
"name":"sky",
"age":30,
"company":["supermap","jidian"],
}
var filter=function(key,value){
if(key=="name"){
return value+"-superman";
}else{
return value;
}
}
var objText = JSON.stringify(obj,filter);
console.log(objText);
//objText = {"name":"sky-superman","age":30,"company":["supermap","jidian"]}
stringify 第二个参数格式化显示
var obj = {
"name":"sky",
"age":30,
"company":["supermap","jidian"],
}
var objText = JSON.stringify(obj,null," ");
console.log(objText);
//objText = {
//"name": "sky",
//"age": 30,
//"company": [
// "supermap",
// "jidian"
//]
//}
·parse
把string变成JavaScript对象
e:
objText = '{"name":"sky-superman","age":30,"company":["supermap","jidian"]}';
var obj = JSON.parse(objText);
console.log(obj);//obj = Object {name: "sky-superman", age: 30, company: Array[2]}
parse 也有一个参数,参数是一个函数
reviver 主要用于字符串和对象的转换
e:
objText = '{"name":"sky","age":30,"company":["supermap","jidian"],"bri":"1986-02-15T16:00:00.000Z"}';
var obj = JSON.parse(objText,function(key,value){
if(key==="bri"){
return new Date(value);
}else{
return value;
}
});
console.log(obj.bri.getTime());//508867200000