直播365足球-beat365投注网站-bst365官网

JSON、JSONObject 与 JSONArray 详细介绍及其应用方式

写在前面的话: 本文以 阿里 开源 JSON解析库 fastjson 进行演示及讲解。为什么要把这个写在文章最前面呢?因为之前在查看很多博客时,博主都

JSON、JSONObject 与 JSONArray 详细介绍及其应用方式

写在前面的话:

本文以 阿里 开源 JSON解析库

fastjson 进行演示及讲解。为什么要把这个写在文章最前面呢?因为之前在查看很多博客时,博主都没有说明工具类出处。这就导致了我拿着

fastjson 的 类 去调 另一个

Jackson 类库的方法。。。

fastjson简介

内容引自

fastjson 新手指南

fastjson 是阿里巴巴的开源JSON解析库,它可以解析 JSON 格式的字符串,支持将 Java Bean 序列化为 JSON 字符串,也可以从 JSON 字符串反序列化到 JavaBean。比较牛的是下面这句话👇

fastjson 相对其他 JSON 库的特点是快,从 2011 年 fastjson 发布1.1.x版本之后,其性能从未被其他 Java 实现的 JSON 库超越

附上其 maven 库坐标

com.alibaba

fastjson

1.2.61

1 什么是 JSON

在最开始接触 JSON 的时候,不太明白 JSON 的概念,感觉很笼统其实 JSON 就是一种轻量级的数据交换格式,被广泛应用于 WEB 应用程序开发

1.1 JSON 的优势

JSON 的简洁 和 清晰的层次结构

易于人阅读和编写,同时也易于机器解析和生成

有效的提升网络传输效率

支持多种语言,很多流行的语言都对 JSON 格式有着很友好的支持

1.2 JSON 对象

这就是一个平常使用的 JSON 对象,特征就是多个属性是被 {} 括起来的 😂

{

"area": "山东菏泽",

"name": "马马马马马百万",

"age": 25

}

1.3 JSON 数组

JSON 数组其实就是包含了多个 JSON 对象的一个集合,数组是以 数组括号 [] 括起来的

[{

"area": "山东菏泽",

"name": "马马马马马百万",

"age": 25

}, {

"area": "河南周口",

"name": "马龙台",

"age": 26

}]

JSON 数组并一定是要相同的 JSON 对象的集合,也可以是不同的对象,不过我在开发过程中并没有这么使用过,感觉挺别扭的。因为如果将多个对象放进一个 JSONArray 中的话,下意识认为是相同类型的集合

下面 👇 这种类型也是正确的 JSON 数组格式

[{

"area": "山东菏泽",

"name": "马马马马马百万",

"age": 25

}, {

"drugCode": "HXUDP000000000000MED0000342809",

"dosformName": "注射剂",

"drugName": "盐酸丁卡因注射液"

}]

1.4 JSON、JSON对象、JSON数组区别

JSON 呢只是一种宏观上的叫法,可以理解为是一种数据结构,就像 xml 结构一样,是一种规约性内容;而 JSON 对象则是对 JSON 的具体体现;JSON 数组则是将多个 JSON 对象进行存储的一个集合,可以想象成 Java 中的 List 和 Object 的关系

2 什么是 JSONObject

JSONObject 是根据 JSON 形式在 Java 中存在的对象映射各大 JSON 类库的 JSONObject 内部实现也是不太一样的。这里以 fastjson 举例 👇

public class JSONObject extends JSON implements Map, Cloneable, Serializable, InvocationHandler {

private static final long serialVersionUID = 1L;

private static final int DEFAULT_INITIAL_CAPACITY = 16;

private final Map map;

public JSONObject(){

this(DEFAULT_INITIAL_CAPACITY, false);

}

public JSONObject(Map map){

if (map == null) {

throw new IllegalArgumentException("map is null.");

}

this.map = map;

}

// 。。。。省略其余内容

}

可以看到 就是对 HashMap 的一层封装,并提供了一些个性化方法。有兴趣的话可以去研究下源码实现,这里就不一一解读了

其使用方式和 HashMap 并无太大区别

JSONObject person = new JSONObject();

person.put("name", "马马马马马百万");

person.put("age", 25);

person.put("area", "山东菏泽");

JSONObject drug = new JSONObject();

drug.put("drugName", "盐酸丁卡因注射液");

drug.put("drugCode", "HXUDP000000000000MED0000342809");

drug.put("dosformName", "注射剂");

3 什么是 JSONArray

其实刚才拿 List 与 Object 关系举例是有迹可查的

仅针对于

fastjson 而言,因为没看别的具体实现,怕被喷。含蓄点的好 😄

存放数据的容器就是一个 List 的类型,默认创建为 ArrayList ,但不仅限于

public class JSONArray extends JSON implements List, Cloneable, RandomAccess, Serializable {

private static final long serialVersionUID = 1L;

private final List list;

protected transient Object relatedArray;

protected transient Type componentType;

public JSONArray(){

this.list = new ArrayList();

}

public JSONArray(List list){

this.list = list;

}

public JSONArray(int initialCapacity){

this.list = new ArrayList(initialCapacity);

}

// 。。。省略余下部分

}

JSONArray 的平常使用方法

内心独白:不就是一个

List 中 套了个

Map 类结构嘛 对不对 品 你品 你仔细品 😁

JSONObject person = new JSONObject();

person.put("name", "马马马马马百万");

JSONObject drug = new JSONObject();

drug.put("drugName", "盐酸丁卡因注射液");

JSONArray array = new JSONArray();

array.add(person);

array.add(drug);

4 Fastjson 的简单应用

4.1 将对象转换为json字符串

import com.alibaba.fastjson.JSON;

String jsonStr = JSON.toJSONString(person);

4.2 将json字符串转换为JSONObject对象

JSONObject jsonObject = JSON.parseObject(jsonStr);

4.3 将JSONObject 转换为对象

JSONObject person = new JSONObject();

person.put("name", "马马马马马百万");

person.put("age", 25);

Student stuObj = JSON.toJavaObject(person, Student.class);

5 结束语

上述文章中并没有涉及到复杂 JSON 对象,只是为了前期理解没有举例下述 JSON 中涉及到了 数值、字符串、内置 JSON 对象、数组

{

"article": {

"row": 1024,

"lastUpdateTime": "2019-12-13 19:27:59",

"Title": "Java 中 JSONArray 与 JSONObject 详细介绍结构及应用",

"images": {

"Url": "http://www.images.com",

"Height": 256,

"Width": "256"

},

"sections": [17, 18, 19, 20]

}

}

5.1 关于 JSON格式化 相关的网站

JSON解析及格式化个性网站 | 可以解析JSON及XML字符串的网站

5.2 关于 JSON 类库项目地址

Json-lib | Gson | Jackson | FastJson

5.3 关于性能测试

性能测试的话可以在网上找些文章或者自己来验证下,可以从不同的类型、数量多少等多维度测试

相关推荐

11件【黄金装】将现世 辉煌心死领先

11件【黄金装】将现世 辉煌心死领先

辉煌 御龙在天黄金精源 纳兰夜碟 心死 御龙在天黄金装务 作为,自从N久之前就出现的黄金装备,从最开始的消费排行的第一名送黄金武器精元

3个国家,16个体育场:2026年世界杯赛场揭晓

3个国家,16个体育场:2026年世界杯赛场揭晓

3个国家,16个体育场:2026年世界杯赛场揭晓 3个国家,16个体育场:2026年世界杯赛场揭晓 编辑:彭紫琦、袁蓓祺 | 2022.12.19 11:07 在2022年卡塔尔世

Oracle数据库如何查看表中索引

Oracle数据库如何查看表中索引

1、查看表中有哪些索引 select * from user_indexes where table_name = '表名' 或者 select * from all_indexes where table_name = '表名' 2、查看表中索引对应哪些列 sele

什么什么地什么成语四字词语(什么什么地的成语)(40个)

什么什么地什么成语四字词语(什么什么地的成语)(40个)

什么什么地什么成语四字词语(什么什么地的成语):不可收拾,不毛之地,不牧之地,不留余地,不败之地,不食之地,充天塞地,冰天雪地,出一头地,出人

流量卡g与兆,流量兆与g的区别

流量卡g与兆,流量兆与g的区别

流量一个g等于多少兆 〖壹〗、 G流量等于1024兆 流量的换算进位是1024。即:1TB=1024G,1GB=1024MB;1MB=1024KB(KB就是所说的K)所以,2G流量是2048兆。

楚乔传哪个台播出|几点播出

楚乔传哪个台播出|几点播出

六姊妹上映:2025/02/03 边水往事上映:2024/08/16 九重紫上映:2024/12/06 柳舟记上映:2024/08/12 七夜雪上映:2024/10/09 余烬之上上映:2025/02/08 四方馆