JSON
简单值,对象,数组都可以说成是JSON
原生JSON 对象(ie 8+ 才支持 )有2个方法
var book = {author:'allen'}; //讲对象转成字符串 var bookStr = JSON.stringify(book); //字符串转化成JSON var bookCopy = JSON.parse(bookStr);
建议使用jQuery的json 解析方法
//标准的JSON 字符串 var str='{ "name": "John" }'; //转成对象 var obj = jQuery.parseJSON(str); //转成字符串 var strCopy = jQuery.stringifyJSON(obj);
不过就目前所接触到的方法基本上都是在Ajax 中使用到JSON 而从后台传递过来,也有想对应的JSON 转化工具 所以在前台转化JSON的场景也并不多。
原生JSON的
过滤方法
var book = {author:'lee',name:'javascript',price:23}; var str = JSON.stringify(book,["author","price"]); //str = '{"author":"lee","price","23"}'; //如果第二个参数是数组的话 就是只序列化 数组里面的属性 var str = JSON.stringify(book,function(key,value){ if(key == 'author'){ return 'abc'; } return value; }) //str = '{"author":"abc" ...}' //将author 对应的值改成abc
缩进
JSON.stringify(obj,null,4); //缩进4个字符串
toJSON方法
var obj = {name:'a',toJSON:function(){return this.age},age:12};
var ret = JSON.tostringify(obj);
//ret = 12;
//JSON.stringify 方法执行顺序
//1 存在toJSON 并且通过方法能取得有效值,那么就调用方法,否则返回对象本身
//2 如果存在第二个参数,应用这个过滤器,传入过滤器的值是1的结果
解析
JSON.parse(obj,function(key.value){ if(key == 'name'){ return 'ac'; } return value ; })