00-Json:hutool
Java 中并没有内置 JSON 的解析,因此使用 JSON 需要借助第三方类库。 下面是几个常用的 JSON 解析类库:
- Gson: 谷歌开发的 JSON 库,功能十分全面。
- FastJson: 阿里巴巴开发的 JSON 库,性能十分优秀。
- Jackson: 社区十分活跃且更新速度很快。
- hutool: 一个小而全的Java工具类库,里面有 JSON 模块。
1、Hutool 简介
官方简介:Hutool 是一个小而全的Java工具类库,通过静态方法封装,降低相关API的学习成本,提高工作效率,使Java拥有函数式语言般的优雅,让Java语言也可以“甜甜的”。
2、Hutool-json 简介
官方将 json.org 官方的 JSON 解析纳入其中,进行改造。在改造过程中,积极吸取其它类库优点,优化成员方法,抽象接口和类,最终形成 Hutool-json。
Hutool-json的核心类只有两个:
- JSONObject:JSON 对象
- JSONArray:这与其它JSON包是类似的,与此同时,还提供一个
JSONUtil
工具类用于简化针对JSON的各种操作和转换。
除了核心类,还提供了一些辅助类用于实现特定功能:
- JSONSupport:Bean类继承此对象即可无缝转换为JSON或JSON字符串。同时实现了
toString()
方法可将当前对象输出为JSON字符串。 - XML:提供JSON与XML之间的快速转换,同时
JSONUtil
中有相应静态封装。 - JSON JSONObject和JSONArray共同实现的接口类,
JSONUtil.parse
方法默认返回此对象(因为不知道是JSON对象还是JSON数组),然后可以根据实际类型判断后转换对象类型。
与FastJSON类似,JSONObject实现了Map接口,JSONArray实现了List接口,这样我们便可以使用熟悉的API来操作JSON。
JSONUtil 是针对 JSONObject 和 JSONArray 的静态快捷方法集合。
以下是 Hutool 中关于 JSON 的常用方法:
JSON 字符串的解析与生成:
JSONUtil.parseObj(jsonStr)
:将 JSON 字符串解析为 JSONObject 对象。JSONUtil.parseArray(jsonStr)
:将 JSON 字符串解析为 JSONArray 数组对象。JSONUtil.toJsonStr(obj)
:将 Java 对象转换为 JSON 字符串。
对象与 JSON 字符串的转换:
JSONUtil.toBean(jsonStr, clazz)
:将 JSON 字符串转换为指定类型的 Java 对象。JSONUtil.toMap(jsonStr)
:将 JSON 字符串转换为 Map 对象。JSONUtil.toCamelCaseMap(bean)
:将 Java 对象转换为驼峰风格的 Map 对象,适用于大部分 JavaBean。
JSON 对象的操作:
JSONObject.get(key)
:获取 JSON 对象中指定 key 的值。JSONObject.put(key, value)
:向 JSON 对象中添加键值对。JSONObject.containsKey(key)
:判断 JSON 对象中是否包含指定的 key。JSONObject.keySet()
:获取 JSON 对象中所有键的集合。
JSON 数组的操作:
JSONArray.get(index)
:获取 JSON 数组中指定索引的元素。JSONArray.add(value)
:向 JSON 数组中添加元素。JSONArray.size()
:获取 JSON 数组的长度。JSONArray.iterator()
:获取 JSON 数组的迭代器。
其他常用方法:
JSONUtil.parseFromXml(xmlStr)
:将 XML 字符串解析为 JSON 对象。JSONUtil.toXmlStr(jsonObject)
:将 JSON 对象转换为 XML 字符串。
3、示例
1、JSONUtil.toJsonStr
将任意对象(Bean、Map、集合等)直接转换为 JSON 字符串
JSONUtil.toJsonStr
可以将任意对象(Bean、Map、集合等)直接转换为 JSON 字符串。如果对象是有序的 Map 等对象,则转换后的 JSON 字符串也是有序的。
1 |
|
结果
1 |
|
如果我们想获得格式化后的 JSON ,则:
1 |
|
结果
1 |
|
2、 JSONUtil.parseObj
JSON 字符串解析
1 |
|
结果
1 |
|
3、JSONUtil.parseFromXml
XML字符串转换为JSON
1 |
|
结果
1 |
|
4、JSONUtil.toXmlStr
JSON 转换为 XML
1 |
|
结果
1 |
|
5、 JSON转Bean
我们先定义两个较为复杂的Bean(包含泛型)
1 |
|
00-Json:hutool
https://flepeng.github.io/021-Java-31-API-00-Json:hutool/