js中的json语法

JSON可以表示三种类型的值:

1,简单值:例如:1,'hello word';

javascript字符串与json字符串最大的区别在于,json字符串必须用双引号(单引号会导致语法错误)

2. 对象: 以“{”(左括号)开始,“}”(右括号)结束。每个“名称”后跟一个“:”(冒号);“‘名称/值’ 对”之间运用 “,”(逗号)分隔。

例如json对象:

{"name":"a","age":1}

javascript对象:

var object={"name":"a","age":1} 或者var object={name:"a",age:1}

与javascript对象有两个不一样的地方,首先,没有声明变量(json中没有变量的概念)。其次,没有末尾的分号(因为这不是java语句,不需要分号)

 

3. 数组:是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间运用 “,”(逗号)分隔。

例如json数组:    (数组对象结合起来的)

[{"name":"a","age":1},{"name":"b","age":2}] 

javascript数组:var values=[15,"hi",true]对应的json数组:[15,"hi",true]

 

JSON对象:有两个方法stringify()和parse()  ie7一下不支持json对象 但是json2.js 对此做了兼容 可以网上下载下

stringify():把javascript对象序列化为json字符串,简单点说就是把json对象转化成json字符串; stringify 接收两个三个参数,第二个参数可以是数组或者函数,第三个参数为缩进,最大数为10

例子:

 
//javascript  字面量对象
var box=[
        {
            title:"a",
            num:1
        },
        {
            title:"b",
            num:2
        }
    ];
var json=JSON.stringify(box)      //一个参数
alert(json)                      // [{"title":"a","num":1},{"title":"b","num":2}]

var  json2=JSON.stringify(box,['title']) //第二个参数为数组
alert(json2)                      //[{"title":"a"},{"title":"b"}]

var json3=JSON.stringify(box,function(key,value){//第二个参数为函数  函数接受两个参数 一个键和一个值
    if(key=='title'){
        return "mr."+value;     //如果这里是返回undefined 表示删除tittle  运行结果里没有title
    }else{
        return value;
    }
})
alert(json3);           //[{"title":"mr.a","num":1},{"title":"mr.b","num":2}]

var json4=JSON.stringify(bok,null,4) //第三个参数为缩进
alert(json4)      

stringify() 有时候无法满足序列化要求,在这些情况下可以给对象定义toJSON()方法,返回其自身的JSON数据格式

var box=[
        {
            title:"a",
            num:1
        },
        {
            title:"b",
            num:2,
            toJSON:function () {
                return this.title;
            }
        }
    ];

var json=JSON.stringify(box)
alert(json) //[{"title":"a","num":1},"b"] b为返回当前title的值

 

 

parse()把json字符串解析为原生的javascript值,也就是说把json字符串转化成json对象;parse()也接受也个函数为参数,函数有两个参数,一个键和一个值

例子:

//将json字符串转换成json对象
        var json='{"name":"ddm","age":27,"sex":"woman"}';var obj = JSON.parse(json);
       alert(obj.name)     //ddm  
    }

 如果还原函数返回undefined ,则表示要从结果中删除相应的键,如果返回其他值,则将改值插入到结果中;

var box=[
        {
            title:"a",
            num:1
        },
        {
            title:"b",
            num:2,
            releaseDate:new Date(2011,11,1)
        }
    ];
var json=JSON.stringify(box);//先序列化
var obj=JSON.parse(json,function(key,value){ //再转化成json对象
    if(key=="releaseDate"){
        return new Date(value);
    }
else if(key=='title'){
        return undefined
    }
else{ return value; } });
alert(obj[1].title) //undefined alert(obj[
1].releaseDate.getFullYear()) //2011

 

posted @ 2015-08-19 14:58  yo`yo  阅读(455)  评论(0编辑  收藏  举报