1.什么是JSON?JSON,全称是JavaScriptObjectNotation,即JavaScript对象表示法。JSON是一种轻量级(Light-Meight)、基于文本(Text-Based)、人类可读(Human-Readable)的格式。虽然JSON的名称中包含了JavaScript,但这意味着它的语法规则是指JavaScript对象,并不是说它只能在JavaScript语言中使用。JSON对于人和机器来说都非常容易读写,而且它的文件比XML(另一种常见的数据交换格式)小,因此它很快成为网络上非常流行的交换格式。近年来,JavaScript已经成为浏览器事实上的标准语言。JavaScript的流行与JSON的流行密切相关。由于JSON本身是参照JavaScript对象的规则定义的,因此它的语法与JavaScript对象定义的语法几乎完全相同。JSON格式的创始人声称这种格式永远不会升级,这意味着这种格式具有长期稳定性。10年前编写的文件在10年后仍然可以使用,没有任何兼容性问题。2、JSON的语法规则是什么?JSON的语法规则非常简单,堪称“优雅完美”。总结:数组由方括号(“[]”)表示。对象(0bject)用大括号("{}")表示。名称/值对(名称/值)组合成数组和对象。名称(name)放在双引号中,值(value)是字符串、数字、布尔值、空值、对象和数组。并行数据用逗号(“,”)分隔{"name":"xdr630","favorite":"programming"}3.JSON和XMLJSON经常被拿来和XML比较,因为JSON的诞生或多或少都有这个意思取代XNL。与XML相比,JSON的优势在于:没有结束标签,长度更短,读写速度更快可以被JavaScript解释器直接解析你可以用数组来对比JSON:{"name":"喜动人","age":22,"fruits":["apple","pear","grape"]}XML:喜动人22apple梨葡萄4.JSON解析和生成(JSON和JS对象之间的转换)在JavaScript中,有两个方法与此相关:JSON.parse和JSON.stringify。JSON和JS对象的互换实现JSON字符串到JS对象的转换,使用JSON.parse()方法:要从JS对象转换为JSON字符串,使用JSON.stringify()方法:五、JSON格式规则1.对象(0bject)对象用花括号(“{}”)括起来,花括号里面是一系列的“名/值对”,请看概念图。两个并行数据用逗号(“,”)隔开,注意两点:使用英文逗号(“,”),不要在最后一个“名/值对”后面使用中文逗号(,”)不要加commasJSON在线语法检查:https://www.json.cn/这里报错说明JSON中的Key/Value不能用单引号正确书写2.数组(Array)数组表示一系列有序的值,使用方括号(“[]”),并列值用逗号分隔,请看概念图。比如下面的数组是合法的:[1,2,"three","four",true,false,null,[1,2],{"name":"喜动人"}]3,name/value对(Name/Value)名称(Name)是一个字符串,必须用双引号括起来,不能用单引号或者不用引号,这点和JavaScript不同。值只有七种类型:字符串(string)、值(number)、对象(object)、数组(array)、true、false和null。不能有其他类型,比如undefined、functions等,请看概念图。string(字符串)的规则如下:英文双引号括起来,不能用单引号,不能用单引号。双引号(")和右斜杠("\")不能在字符串中单独出现,如果要使用双引号或右斜杠,需要使用“右斜杠+字符”的形式,如\"和\\,其他转义字符同理。字符串的概念图。转义符{"string":"\\\""}数值型,可以用科学计数法表示{"number":1e3,"n1":1e2,"n2":-100}6.字符串转换into对象解析:指将符合JSON语法规则的字符串转换为对象的过程,不同的编程语言提供了解析JSON字符串的方法,这里主要讲解JavaScript中的解析方法,主要有三种:使用eval()使用JSON.parse()使用第三方库,如JQuery等1、eval()eval()函数的参数是一个字符串,其作用是直接执行其中的JavaScript代码。案例:eval()解析一个字符串eval解析字符串的结果:eval()可以解析JSON字符串.从这里也可以看出,JSON和JavaScript是高度嵌入的。案例:eval()解析JSON字符串不过现在很少直接用eval()来解析了。如果你的浏览器版本真的很旧,你可能需要这个方法。另外,eval()是一个比较危险的函数,因为字符串中可能包含未知因素。这里作为研究,还是要知道这也是一种方法。请注意eval()的参数。在字符串周围添加括号。这是必须的,否则会报错。因为JSON字符串是用花括号(“{}”)括起来的,如果直接放在eval()中会作为一个语句块执行,所以需要在两边加上括号使其成为一个表达式。2.JSON.parse()现在大部分浏览器都支持JSON.parse(),这是推荐的方法。如果输入了不符合规范的字符串,将报错。案例:将JSON字符串转为JS对象JSON.parse()可以有第二个参数,它是一个函数。这个函数有两个参数:name和value,分别代表名字和值。传入JSON字符串时,将为JSON中的每组名称/值对调用此函数。这个函数有一个返回值,返回值会赋给当前的名字(name)。使用第二个参数,您可以在解析JSON字符串的同时对数据进行一些处理。case:可用于判断处理,当JSON字符串name=age时,设置age=14的值7.JS对象序列化为字符串是指将JavaScript值转换为JSON字符串的过程。JSON.stringify()将JavaScript值转换为JSON字符串。JSON.stringify()生成的字符串可以用JSON.parse()恢复为JavaScript值。1、参数含义JSON.stringify(value[,replacer[,space]])value:必填参数。要转换的JavaScript值,通常是对象或数组。替换:可以省略。有两个选项:函数或数组。如果是函数,则为每组名称/值对调用此函数,函数返回一个值,将其转换为结果字符串作为名称的值。如果它返回未定义,则忽略该成员。case:如果是数组,则只能转换数组中的名字,转换后的顺序与数组中的值一致。示例:改变顺序,转换后的JSON字符串值不变varjsonstr=JSON.stringify(obj,["c","a","b"]);空格:可以省略。这是为了排版和阅读方便。可以向JSON字符串添加空格或制表符等。2.value当不符合JSON语法规则时,不会转为JSON字符串。当数组中有函数时,会转为null3、替换用法4、空间使用情况:在上面的基础上添加进入选项卡:\t