总结放于前:
JSON是一种利用JSON数组和JSON对象描述数据内容的数据格式,采用树状的结构,只能有一个父节点,子节点不设限,但父子节点均为JSON对象或者JSON数组。
关于上面的描述可以精简为一句话:Json 是一种数据格式,和语言无关,在什么语言中都可以使用 Json。
基于这种通用的数据格式,一般处理两方面的任务:
(1) 组织数据(数据序列化),用于数据的网络传输
通讯过程如下: 假设有一种情况A需要给B发送指令,如果只是一个string类型的信息是很简单的,但是如果这条信息包含:string,int ,double,那么就需要将这些内容放到JSON这种数据格式中,从而得到一个字符串,从A端发送到B端,B就可以按照JSON的格式将字符串解析处理,处理完成之后又按照JSON的格式发送给A端,A端接到信息后进行解析处理,这就是一个AB端发送接收的过程。具体如下图所示:
总结:JSON通讯函数发送的是一个字符串,这样就需要将要发送的内容组织到一个字符串中,发送给对方。
(2) 组织数据(数据序列化),写磁盘文件实现数据的持久化存储(一般以.json 作为文件后缀,适合做为配置文件)
数据在磁盘中的存储就涉及数据的写入和读取,写入需要按照JSON的格式,读取也是读到的为JSON格式的字符串,把读到的字符串按照JSON的数据格式就可以将里面对应的原始数据格式依次读取出来
Json 中主要有两种数据格式:Json 数组和 Json 对象,并且这两种格式可以交叉嵌套使用,下面依次介绍下这两种数据格式:
整形、 浮点、 字符串、 布尔类型、 json数组、 json对象、 空值-null
。
(1)Json 数组中的元素数据类型一致
// 整形
[1,2,3,4,5]
// 字符串
["luffy", "sanji", "zoro", "nami", "robin"]
(2)Json 数组中的元素数据类型不一致
[12, 13.34, true, false, "hello,world", null]
(3)Json 数组中的数组嵌套使用
[
["cat", "dog", "panda", "beer", "rabbit"],
["北京", "上海", "天津", "重庆"],
["luffy", "boy", 19]
]
(4)Json 数组和对象嵌套使用
此处将一个JSON对象写入到一个JSON数组中,数组为父节点,对象为一级子节点。JSON对象中只有一个键值对作为二级节点,key值为字符串luffy
,他对应的value值还是一个JSON对象作为三级节点,三级节点内包含了若干个键值对
[
{
"luffy":{
"age":19,
"father":"Monkey·D·Dragon",
"grandpa":"Monkey D Garp",
"brother1":"Portgas D Ace",
"brother2":"Sabo"
}
}
]
使用 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 数据持久化到磁盘文件中,需要注意一个问题:在一个 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对象并列写入到同一个文件里边,切记!!!
声明: 本篇是在以下视频及链接基础上学习并稍微做了补充,感谢原博主!
学习视频地址:Json简介学习视频
学习笔记网址:笔记网址