更加全面的认识json
json
大家好,我是小刘!好久没写技术文章了,最近都是在好好生活,好好的学习,分享我知道的一些json 相关的,我自己在总结归纳,让我们深入理解json,不仅是知道是什么,怎么用,还可以知道他的背景、用法、原理 要知道:
知其然而不知其所以然
作为Java后端开发者json再熟悉不过了
但是你真的知道json嘛?
什么是json
百度百科:

简称:JSON是JavaScript Object Notation的简称,中文含义为“JavaScript 对象表示法”,它是一种数据交换的文本格式,而不是一种编程语言。
JSON 是一种轻量级的数据交换格式,它基于 ECMAScript (w3c制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。简洁和清晰的层次结构使得 JSON 成为理想的数据交换语言。
JSON的特点
JSON 主要具有以下特性,这些特性使它成为理想的数据交换语言:
JSON 是轻量级的文本数据交换格式
JSON 具有自我描述性,更易理解
JSON 采用完全独立于语言的文本格式:JSON 使用 JavaScript 语法来描述数据对象,但是 JSON 仍然独立于语言和平台。JSON 解析器和 JSON 库支持许多不同的编程语言。目前常见的动态编程语言(PHP,JSP,.NET)都支持JSON。
JSON 是存储和交换文本信息的一种语法,它与XML具有相同的特性,是一种数据存储格式,却比 XML 更小、更快、 更易于人编写和阅读、更易于生成和解析。
类似于 XML 的特性:
JSON 是纯文本
JSON 具有“自我描述性”(人类可读)
JSON 具有层级结构(值中存在值)
JSON 可通过 JavaScript 进行解析
JSON 数据可使用 AJAX 进行传输
相比 XML 的不同之处:
没有结束标签
更短
读写的速度更快
能够使用内建的 JavaScript eval() 方法进行解析
使用数组
不使用保留字
JSON语法
在 JavaScript 语言中,一切皆对象。任何支持的类型,如字符串、数值、对象、数组等,都可以通过 JSON 来表示。
JSON 语法是 JavaScript 对象表示法的子集:
数据在键/值对中,键/值对可以嵌套
数据由逗号分隔
花括号保存对象,对象可以包含多个键/值对
方括号保存数组,数组可以包含多个对象
JSON不是JavaScript语句,对象的末尾没有分号,对象和数组的最后一个成员后面,也不能加逗号。
JSON的类型
1.1 JSON 键/值对
JSON键/值对由键和值组成,键必须是字符串,值可以是字符串(string)、数值(number) 、对象(object)、数组(array)、true、false、 null。如图所示:

在定义JSON键/值时,先是键名,后面写一个冒号,然后是值。如:"github": "https://github.com/leiqikui"
这就等价于这条 JavaScript 语句:
github = "https://github.com/leiqikui"
1.2 JSON 字符串
JSON 的字符串(string)跟C或者Java的字符串非常相似,是由双引号包围的任意数量Unicode字符的集合,使用反斜线转义。如图所示:
由于JSON 字符串不能使用单引号,因此一个字符(character)就是一个单独的字符串(character string)。
1.3 JSON 数值
JSON 数值(number)与C或者Java的数值非常相似,支持整型、浮点型,浮点型也可以用指数表示。如图所示:
JSON不支持八进制和十六进制, 数值必须以十进制表示,且不能使用NaN和Infinity。以下是合法的JSON数值:
{ "age": 30 }
1.4 JSON 对象
JSON 对象是一个无序的key/value对的集合。一个对象以 '{' 开始,以 '}' 结束;每个key 和 value 中使用冒号分隔;每个 key/value 对之间使用逗号分隔。如图所示:
JSON 对象语法:
对象在大括号({})中书写。
对象可以包含多个 key/value(键/值)对。
key是字符串,必须放在双引号里面。value 可以是合法的 JSON 数据类型(字符串, 数值, 对象, 数组, 布尔值或 null)。
一个 key/value 对内部,key 和 value使用冒号(:)分隔。
key/value 对之间,使用逗号(,)分隔。
对象可以嵌套
下面就是一个合法的JSON 对象:
1.5 JSON 数组
数组是值(value)的有序集合。一个数组以“[”(左中括号)开始,“]”(右中括号)结束。值之间使用“,”(逗号)分隔。如图所示:

JSON 数组:
数组在中括号中书写。
数组的值必须是合法的 JSON 数据类型(字符串, 数值, 对象, 数组, 布尔值或 null),也可以是 JavaScript 的表达式,包括函数、日期、undefined。
对象的属性值也可以是一个JSON数组。如,以下对象的 sites 属性值是一个包含三个元素的数组:
JSON数组的元素也可以是对象。如,以下对象 "employees" 是包含三个对象的数组,每个对象代表一条关于某人(有姓和名)的记录:
1.6 JSON 布尔值
JSON 布尔值可以是 true 或者 false。如:
{ "flag":true }
1.7 JSON null
JSON 可以设置 null 值。如:
{ "zhihu":null }
1.8 JSON 文件
JSON 文件的文件类型是 ".json"
JSON 文本的 MIME 类型是 "application/json"
Java解析(读取)json数据{} [{}]
1.JSON介绍
JSON比XML简单,主要体现在传输相同信息的情况下,文件的大小不同。JSON只用于传输信息,XML还可以用于配置文件的使用。简单来说
JSON就是一种数据的组织形式,可以说是XML的简化版本,只用于数据传输。
2.JSON中的数组和对象
2.1数组(JSONArray)
数组用一对[],表示存放的是一般的数组数据。
如:["11","22","33"],表示这是一个JSONArray数组,里面有3个数据:11,22,33。当然可以是复杂的数据,就是所谓的嵌套定义吧。
2.对象(JSONObject)
对象用一对{},来表示其中JSON通用的键-值对。
如:{"sex1":"female","name0":"zhangsan"},表示的是一个JSON对象,里面有两组数据(键值对),sex1=female,name0=zhangsan。当然这里键对应的数据值,可以是复杂的JSON对象或者数组。
案例demo如下:
基本的JSONArray与JSONObject操作
由java自带的数据结构转换为JSON文本
读取JSON文本
JSONArray必须用下标读取内部数据。
JSONObject必须用”键“读取对应的”值“。
JSONArray和JSONOject的用法
JSONArray用法
1 解析字符串
2 存值取值
(1) 存值
(2) 取值
3 格式:
本质是数组, 必须是数组格式, 用 [ ] 包裹数据
格式: [{key:value},{key:value}... ]
["str1","str2","str3",...]
JSONObject的用法
1 解析字符串
2 存值取值
(1) 存值
(2) 取值
3 格式:
本质是对象, 用 {} 表示
格式: {key:value}
案例demo如下:
只要格式正确, 空字符串和null都是可以解析
答案: 打印第6条因格式不对, 会报错, 所以注释了
最后
总结:
JSON是JavaScript Object Notation的简称,中文含义为“JavaScript 对象表示法”,它是一种数据交换的文本格式,而不是一种编程语言。
2.json 的特点:
1.JSON 是轻量级的文本数据交换格式
2.JSON 具有自我描述性,更易理解
3.JSON 采用完全独立于语言的文本格式、JSON 解析器和 JSON 库支持许多不同的编程语言。
4.比 XML 更小、更快、 更易于人编写和阅读、更易于生成和解析。
5.JSON 是纯文本、易读、层级结构鲜明、JSON 可通过 JavaScript 进行解析、JSON 数据可使用 AJAX 进行传输
3.常用的json:比如json字符串、json对象、json数组
4.json的解析:
{} 用JSONObject
[] 用JSONArray

最后,欢迎学编程的朋友们加入我的 《java学习群》,我会 1 对 1 解决你的问题(尽我所能),群里的人也会对解答疑惑。

扫码拉群,学习打卡,交流经验