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);