JSON序列化输出
var xiaoming = { name: '小明', age: 14, gender: true, height: 1.65, grade: null, 'middle-school': '\"W3C\" Middle School', skills: ['JavaScript', 'Java', 'Python', 'Lisp']};
stringify()用于从一个对象解析出字符串
alert(JSON.stringify(xiaoming, '/n', ' ')); //换行,原样输出JSON,如果不加stringify()做处理会解析不出这个数据,处理结果为undefined
alert(JSON.stringify(xiaoming, ['height','age'], ' ')); //第二个参数可以选填 只显示选中的数据,其他数据不显示
function convert(key, value) { if (typeof value === 'string') { return value.toUpperCase(); //字符串的转换为大写 } return value; } console.log(JSON.stringify(xiaoming, convert, ' '));
可以直接用浏览器console控制台,把代码复制进去看执行结果,这个结果是转换大写
精确控制如何序列化
//如果我们还想要精确控制如何序列化小明,可以给xiaoming定义一个toJSON()的方法,直接返回JSON应该序列化的数据 var xiaoming = { name: '小明', age: 14, gender: true, height: 1.65, grade: null, 'middle-school': '\"W3C\" Middle School', skills: ['JavaScript', 'Java', 'Python', 'Lisp'], toJSON: function(){ //这是字面量的写法 其他就用正常的函数写即可, function toJSON(){return } return{ '姓名':'小明', '年龄':14 } }};console.log(JSON.stringify(xiaoming));
反序列化(json解析)
console.log(JSON.parse('{"name":"小明","age":14}'));
var jsn = JSON.parse('{"name":"小明","age":14}', function (key, value) { if(key === 'name') { return value + '同学'; } return value; }); console.log(jsn);