初识Json

avatar
作者
筋斗云
阅读量:0
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对象中可以存储若干个元素,每一个元素对应一个键值对(key:value 结构),元素和元素之间使用逗号间隔,最后一个元素后边没有逗号。对于每个元素中的键值对有以下细节需要注意:

  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对象并列写入到同一个文件里边,切记!!!

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!