javascript---JSON

来源:互联网 发布:mac如何播放网页视频 编辑:程序博客网 时间:2024/06/04 18:32

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



0 0