JSON

JSON是一种表示结构化数据的格式,而非编程语言,相对于XML的烦琐,JSON是在js中读写结构化数据的更好的方式,可以将JSON直接传递给eval(),而不需要创建DOM对象;当然并非只有JS可以使用JSON,很多的编程语言都具有针对JSON的解析器环绕序列化器

JSON语法

可以用来表示三种类型的值

  • 简单值:可以表示数值,布尔,字符串,null

       注意:①不支持 undefined;
             ②JSON字符串必须使用双引号
    
  • 对象:表示的是一组无序的键值对,其中的值可以是简单类型的也可以是复杂类型的

    JSON中的对象和JS中的对象是不一样的
     ①JSON中没有变量的概念,因此没有变量的声明
     ②末尾没有分号
     ③对象的属性必须加双引号
    
  • 数组:表示的是一组有序的值的序列(JS中字面量的方式)

     注:JSON数组中也没有变量和分号
     将对象和数组结合起来可以构成更为复杂的数据集合
    
  //js对象
  var obj={
    name:"zs",
    age:23
  };
 // JSON对象
 {
  "name":"zs",
  "age":23
 }
var  arr=[12,"hi",true];//js中的数组
[12,"hi",true]//JSON 中的数组
解析和序列化

早期JSON解析器使用的是js中的eval()函数,eval()函数可以解析,解释并返回JS对象和数组 但在一些旧版本的浏览器中使用eval()对JSON数据结构求值会存在风险;
ES5定义了一个原生的JSON对象,JSON.stringify()方法用来将对象序列化为JSON字符串,JSON.parse()方法 是将JSON数据解析为JS对象

序列化

JSON.stringify()
默认情况下,输出的JSON字符串是不含有空格字符或缩进的,在序列化js对象时,所有的函数和原型成员都会被忽略,且值为undefined的属性也会被跳过。
JSON.stringify()还可以接收两个参数,用于指定以不同的方式序列化js对象。参数一:过滤器(可以是数组,也可以是函数);参数二:是一个选项,表示是否在JSON字符中保留缩进(缩进的字符或空格的最大长度为10,所有大于10的值都会自动转换为10)

     var dog={
     name:'xg',
     age:3,
     weight:'15kg'
     };
     var jsonText=JSON.stringify(dog,["name","weight"],4);//缩放4个空格
     var jsonText2=JSON.stringify(dog,null,'--');
     console.log(jsonText);
     console.log(jsonText2);
   结果:
{
    "name": "xg",
    "weight": "15kg"
}
{
--"name": "xg",
--"age": 3,
--"weight": "15kg"
}
解析选项

JSON.prase()方法也可以接收另一个参数,该参数是一个函数,将在每个键值对上调用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值