Json学习笔记

Json是一种轻量级的数据格式,使用了JavaScript语法的子集表示简单值(数字、字符串、布尔值)、null、对象(表示一组键值对)和数组,不支持变量、函数、对象实例。可将Json数据结构解析为JavaScript对象(而XML数据结构需要解析为DOM文档更麻烦)。也可将JavaScript对象转换为可随请求发送的数据(字符串,Ajax适合将纯文本内容发送给服务器)。即可方便地使对象和字符串自由转换。
Json中对象没有名字,仅用{}将属性包括进来,并且属性名必须用双引号。数据定义结束后没有分号,Json不是JavaScript语句。
ECMAScript定义了一个全局的JSON对象,该对象有两个方法:

stringify()

将json对象或JS对象序列化为JSON格式的字符串

var books=[
      {
          title:"gone with the wind",
          authors:["mike","lily"],
          edition:3,
          year:2011
      },
      {
          title:"six god",
          authors:["anna","lucy"],
          edition:4,
          year:2011
      },
      {
          title:"prada",
          authors:["lilei","tom"],
          edition:3,
          year:2011
      }
  ]
  //参数function中定义了对每个传入对象的键值应该做什么处理
  var jsonbook = JSON.stringify(books,function(key,value){
      switch(key){
          case "authors":
            return value.push("anna");//返回键值
          case "year":
            return 2000;
          case "edition":
            return undefined;//删除某个键
          default:
            return value;
      }
  },4);

如果stringify()不能满足序列化的要求,可以对象内部定义toJSON方法作为函数过滤器的补充,然后仍是通过调用stringify来序列化,此时的顺序为:
(1) 如果存在toJSON方法且通过它能取得有效值,则调用该方法,否则返回对象本身
(2)如果提供了第二个参数,应用这个函数过滤器,传入函数的值应该是(1)中的返回值。
(3)对(2)中返回的每个值进行序列化
(4)如果提供了第三个参数则执行相应的格式化

var book={
          title:"gone with the wind",
          authors:["mike","lily"],
          edition:3,
          year:2011,
          releaseDate:new Date(2011,11,1),
          toJSON:function(){
              return this.title;
          }
      }
  var jsonbook = JSON.stringify(book);
  alert(jsonbook);

parse()

将json字符串解析为原生的JavaScript值,即一个json对象。

var strJson='[{"name":anna,"age":12,"gender":"famale"},{"name":mike,"age":12,"gender":"male"},{"name":lily,"age":20,"gender":"famale"}]';  //注意单引号要写在外面,属性值用上引号,且不要有换行空格等

  //参数function将在每个键值对上调用
  var booksCopy = JSON.parse(jsonbook,function(key,value){
      if(key=="releaseDate"){
          return new Date(value);//返回一个Date对象作为键值
      }else{
          return value;
      }
  });
  alert(booksCopy[0].releaseDate.getFullYear());
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值