简单理解JSON

一、JSON格式

1.什么是JSON

        JSON的全称是”JavaScript Object Notation”,意思是JavaScript对象表示法,它是一种基于文本,独立于语言的轻量级数据交换格式。XML也是一种数据交换格式,为什么没有选择XML呢?因为XML虽然可以作为跨平台的数据交换格式,但是在JS(JavaScript的简写)中处理XML非常不方便,同时XML标记比数据多,增加了交换产生的流量,而JSON没有附加的任何标记,在JS中可作为对象处理,所以我们更倾向于选择JSON来交换数据。

2. json格式与xml的比较

      与同样作为数据传输的格式的xml比起来,json具有以下优点: 
           - 书写简单,结构清晰,轻量级 
           - 符合javascript的原生语法,解释器引擎可以直接处理

3. 对于json格式的几个规定:

    • 数组或对象的值可以是简单值也可以是复合值
    • 简单值包括:字符串、数值(必须是十进制标识)、布尔值和Null,其中(NaN,Infinity,-Infinity和undefined都会被转换为null)
    • 复合值包括符合json格式的数组或对象
    • 数组或对象的最后一个成员后面不能加逗号
    • 数组或对象之中的字符串必须使用双引号,不能使用单引号
    • 对象的成员名称必须使用双引号                    

二、JSON对象

ES5中添加了json对象,其包含两个方法:JSON.stringify()和JSON.parse()

1. JSON.stringify() 
用处:将一个值转换为json格式的字符串,该字符串可以被JSON.parse()解析,需要注意以下几点:

  • 原始类型的字符串解析后会自动加上双引号
  • 原始对象中如有一个成员是undefined,函数或者是xml对象,则这个成员被忽略
  • 原始对象中如果数组的成员的是undefined,函数或者是xml对象,则被转换为null
  • 正则表达式会被转换为空对象
  • 自动忽略原始对象中不可遍历的属性
  • 可以接受一个数组参数,指定需要转换成字符串的属性
  • 可以接受一个函数作为参数,指定如何来转换成字符串,注意该函数是递归处理所有的键
  • 如何被转换的对象中包含一个toJSON方法,则会使用该方法的返回值,将该返回值转换为字符串,忽略其他成员(可以被用来处理转换正则表达式的情况)

2. JSON.parse() 
用处:用来将json格式的字符串转换为对象。如果该json字符串不符合json格式,则会报错。

原文地址:https://www.cnblogs.com/wwhai/p/8916632.html