JSON(JavaScrip Object Notation)是一种轻量级的数据交换格式。它基于 ECMAScript (欧洲计算机协会制定的js规范)的一个子集采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。 易于人阅读和编写同时也易于机器解析和生成并有效地提升网络传输效率。关于上面的描述可以精简为一句话Json是一种数据格式和语言无关在什么语言中都可以使用Json。基于这种通用的数据格式一般处理两方面的任务1.组织数据数据序列化用于数据的网络传输2.组织数据数据序列化写磁盘文件实现数据的持久化存储一般以.json作为文件后缀Json中主要有两种数据格式Json数组和Json对象并且这两种格式可以交叉嵌套使用下面依次介绍下这两种数据格式1. Json数组Json数组使用 [] 表示[]里边是元素元素和元素之间使用逗号间隔最后一个元素后边没有逗号一个Json数组中支持同时存在多种不同类型的成员包括整形、 浮点、 字符串、 布尔类型、 json数组、 json对象、 空值-null。由此可见Json数组比起C/C数组要灵活很多。Json数组中的元素数据类型一致// 整形 [1,2,3,4,5] // 字符串 [luffy, sanji, zoro, nami, robin]Json数组中的元素数据类型不一致[12, 13.34, true, false, hello,world, null]Json数组中的数组嵌套使用[ [cat, dog, panda, beer, rabbit], [北京, 上海, 天津, 重庆], [luffy, boy, 19] ]Json数组和对象嵌套使用[ { luffy:{ age:19, father:Monkey·D·Dragon, grandpa:Monkey D Garp, brother1:Portgas D Ace, brother2:Sabo } } ]2. Json对象Json对象使用 {} 来描述每个Json对象中可以存储若干个元素每一个元素对应一个键值对keyvalue 结构元素和元素之间使用逗号间隔最后一个元素后边没有逗号。对于每个元素中的键值对有以下细节需要注意1.键值key必须是字符串位于同一层级的键值不要重复因为是通过键值取出对应的value值2.value值的类型是可选的可根据实际需求指定可用类型包括整形、 浮点、 字符串、 布尔类型、 json数组、 json对象、 空值-null。使用Json对象描述一个人的信息:{ Name:Ace, Sex:man, Age:20, Family:{ Father:Gol·D·Roger, Mother:Portgas·D·Rouge, Brother:[Sabo, Monkey D. Luffy] }, IsAlive:false, Comment:yyds }3. 注意事项通过上面的介绍可用看到Json的结构虽然简单但是进行嵌套之后就可以描述很复杂的事情在项目开发过程中往往需要我们根据实际需求自己定义Json格式用来存储项目数据。另外如果需要将Json数据持久化到磁盘文件中需要注意一个问题在一个Json文件中只能有一个Json数组或者Json对象的根节点不允许同时存储多个并列的根节点。下面举例说明错误的写法// test.json { name:luffy, age:19 } { user:ace, passwd:123456 }错误原因在一个Json文件中有两个并列的Json根节点并列包含Json对象和Json对象、Json对象和Json数组、Json数组和Json数组根节点只能有一个。正确的写法// test.json { Name:Ace, Sex:man, Age:20, Family:{ Father:Gol·D·Roger, Mother:Portgas·D·Rouge, Brother:[Sabo, Monkey D. Luffy] }, IsAlive:false, Comment:yyds }在上面的例子中通过Json对象以及Json数组的嵌套描述了一个人的身份信息并且根节点只有一个就是Json对象如果还需要使用Json数组或者Json对象描述其他信息需要将这些信息写入到其他文件中不要和这个Json对象并列写入到同一个文件里边切记