我理解的json 20170220

1、json。

定义:json(javascript   object   notation):js对象表示法。

语法:可以表示三种类型的值。如下。

1、简单值:null   布尔   数值   字符串(无defined)

2、对象:无序键值对。

此外,写法上属性有双引号,没有变量和分号。

js对象表示法:

var  book = {

name:"tfs",

age:5

};

jSON表示法:

{

"name":"tfs",

"age":5

}

3、数组:有序键值对。

 [

{

"name":"tfs",

"age":5

"sister":[

"name":"tfr",

"age":4

]

}

]

解析:两种。把json解析成js,和把js解析成json。

1、把js解析成json

JSON.stringify(),默认解析完输出的json不带任何换行缩进。

var  book = {

balabala

}

var  jsonText = JSON.stringify(book);

2、把json解析成js。

两种方法,eval()和JSON.parse()。但eval()可能会执行一些恶意代码,不安全,故一般不用。

var  bookCopy = JSON.parse( jsonText );

序列化:两种方法:JSON.stringify()和toJSON()

1、JSON.stringify(book,过滤器,缩进与否)

过滤对象:可以是数组或者函数。

                  数组:var  jsonText = JSON.stringify(book,["name","age"]);则只保留book变量里的两个属性,name 和age

                  函数:var  jsonText = JSON.stringify(book,function(key,value){

                             switch(key){

case  "name":

return  value.join(’,“);        //将数组连成一个字符串。

case  "age":

return  undefined;         //删除该属性。

default:

return  value;              //返回book里除了undefined的属性外的其他属性。

}        

                                });

缩进与否:var  jsonText = JSON.stringify(book,null,"--");

                    var  jsonText = JSON.stringify(book,null,4);

两种,见上。数值或者字符串。另,只要该参数有效,最后的结果会自动插入换行符。且缩进空格数最大值为10,大于10则会自动转换成10.


2、toJSON()

var  book = {

name:"tfs",

age:5

toJSON:function(){     //把toJSON()方法加入js的变量book,实现自定义序列化。若toJSON()和过滤器同时存在,则传入过滤器的值是toJSON()返回的值。

return  this.name;

}

};

var  jsonText = JSON.stringify(book);  //{”name“:"tfs"}

解析选项:

var bookCopy = JSON.parse(jsonText,还原函数);

还原函数   function(key,value){

}



注:这里不得不说一下js对象的知识了。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值