欢迎光临散文网 会员登陆 & 注册

更加全面的认识json

2023-04-07 00:10 作者:小刘Java之路  | 我要投稿

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条因格式不对, 会报错, 所以注释了
       



最后

总结:

  1. 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 解决你的问题(尽我所能),群里的人也会对解答疑惑。


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


更加全面的认识json的评论 (共 条)

分享到微博请遵守国家法律