js之json

关于json不了解的,请点击:http://www.json.org/json-zh.html

json对象的属性必须要用双引号,值为字符串类型也只能使用双引号,例:{"name":"mu"} json不支持undefined类型

由于ie8-版本不支持JSON对象,所以需要引用https://github.com/douglascrockford/JSON-js/blob/master/json2.js文件 才能模拟JSON对象并调用它的相关方法 (eval方法虽然也可以做json对象的转换,但不安全)

1 js对象转换为json字符串 JSON.stringify

var obj = { name: "mu", age: 30, sex: 1 };

var json = JSON.stringify(obj);

document.write(json);

//JSON.stringify 第二参数传一个数组,则js对象跟数组中的元素同名的属性才会被转换

json = JSON.stringify(obj,["name","sex"]);

document.write(json);

//JSON.stringify 第二参数传入一个回调函数,并以js对象的键和值为参数,可对转换的值进行处理,如果返回undefined则不会转换该js对象的属性
json = JSON.stringify(obj, function(key,value) {
    if (key == "name") {
        return value + "test";
    }
    return value;
});

document.write(json);

//JSON.stringify 第三参数传一个数字,则会缩进显示,但数字超过10则只按10处理
json = JSON.stringify(obj, null,10);

alert(json);

//JSON.stringify 第三参数传一个字符串,则会在属性前加上这个字符串,但传入的字符超过10个则截取10个字符
alert(json);

//如果对象中有toJSON方法,则先调用toJSON,得到结果会再执行第二个参数和第三个参数
var obj = {
    name: "mu",
    age: 30,
    sex: 1,
    toJSON: function() {
        return this.name;
    }
};

json = JSON.stringify(obj);

document.write(json);

2 json字符串转换为js对象 JSON.parse

var obj = { "name": "mu", "age": 30, "sex": 1 };

var json = JSON.stringify(obj);

var o = JSON.parse(json);

document.write(o.name);

//JSON.parse 第二参数传入一个函数,并且参数为对应的键和值,转换的对象属性的值进行修改
o = JSON.parse(json, function(key,value) {
    if (key == "name") {
        return "test" + value;
    }
    return value;
});

document.write(o.name);

 

posted on 2013-10-29 15:58  穆穆  阅读(2595)  评论(0编辑  收藏  举报