JSON与js对象

JSON

JSON是基于文本的数据格式,相对于基于二进制的数据。所以JSON在传递的时候是传递符合JSON这种格式的字符串,我们常会称为“JSON字符串”。
JSON是轻量级的数据格式,如xml需要用到很多标签,而JSON比较轻量,即相同数据,以JSON的格式占据的带宽更小,这在有大量数据请求和传递的情况下是有明显优势的。
JSON被广泛地用于数据交换。以前端js进行ajax的POST请求为例,后端PHP处理请求为例:
1. 前端构造一个js对象,用于包装要传递的数据,然后将js对象转化为JSON字符串,再发送请求到后端;
2. 后端PHP接收到这个JSON字符串,将JSON字符串转化为PHP对象,然后处理请求。
两种语言都能把JSON这种数据格式很容易地转化为自己能理解的数据结构

JSON和js对象的区别

JSON是可以传输的,因为它是文本格式,但是js对象是没办法传输的。
在语法上,JSON也会更加严格。JSON的键名必须是加双引号,JSON的值只能是数值(10进制)、字符串(双引号)、布尔值和null,也可以是数组或者符合JSON要求的对象,不能是函数、NaN, Infinity, -Infinity和undefined,最后一个属性后面不能有逗号,数字前导0不能用,小数点后必须有数字。
虽然JSON的

JSON基本使用

通常我们使用JSON.stringify,传入一个对象,将js对象转化成JSON字符串

   JSON.stringify({"name": "sysuzhyupeng","age": 24});

如果第二个参数是一个函数,那么序列化过程中的每个属性都会被这个函数转化和处理

   var info = {
       name: 'sysuzhyupeng',
       age: 24
   }
   var str = JSON.stringify(info, function(key, value){
      if(key == 'age'){
          return value + 10;
      } else{
          //如果你把这个else分句删除,那么结果会是undefined
          return value;
      }
   })
   str // "{"name":"sysuzhyupeng","age":34}"

第二个参数还可以传入数组来过滤key值

   var info = {
       name: 'sysuzhyupeng',
       age: 24
   }
   var str = JSON.stringify(info, ['name']);
   str // "{"name":"sysuzhyupeng"}"

JSON.parse() 如果参数JSON字符串不是合法的字符串的话,那么这个函数会抛出错误,所以如果你在写一个后端返回JSON字符串的脚本,最好调用语言本身的JSON字符串相关序列化函数
以上所说的两个函数都不兼容IE7以下的浏览器

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值