JSON数据实际应用

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

 扩展一下stringif 加入三个参数则会帮你自动展开数组

JSON.stringify(xx, null, 2)

posted @ 2016-11-20 17:18  Model-Zachary  阅读(218)  评论(0编辑  收藏  举报