JSON 工具 - JSONUtil
# JSON 工具 - JSONUtil
简介
JSONUtil
是 Hutool 提供的一个强大的 JSON 操作工具类,主要用于 JSON 的创建、解析、转换和格式化。它封装了常见的 JSON 处理操作,使得在 Java 中操作 JSON 变得更加简单和高效。JSONUtil
涉及的操作包括将对象转换为 JSON 字符串、解析 JSON 字符串、XML 与 JSON 的相互转换等功能,极大简化了开发中的数据处理工作。
# 1. toJsonStr
和 toJsonPrettyStr
方法
toJsonStr
方法用于将任意对象转换为 JSON 字符串,而 toJsonPrettyStr
则用于生成格式化的、更加可读的 JSON 字符串。
# 示例:将对象转换为 JSON 字符串
import cn.hutool.json.JSONUtil;
import java.util.SortedMap;
import java.util.TreeMap;
public class JSONUtilExample {
public static void main(String[] args) {
// 创建有序的 SortedMap 对象
SortedMap<Object, Object> sortedMap = new TreeMap<Object, Object>() {
private static final long serialVersionUID = 1L;
{
put("attributes", "a");
put("b", "b");
put("c", "c");
}
};
// 将对象转换为 JSON 字符串
String jsonStr = JSONUtil.toJsonStr(sortedMap);
System.out.println("JSON 字符串: " + jsonStr); // {"attributes":"a","b":"b","c":"c"}
// 生成格式化的 JSON 字符串
String prettyJsonStr = JSONUtil.toJsonPrettyStr(sortedMap);
System.out.println("格式化的 JSON 字符串:\n" + prettyJsonStr);
/* 输出:
{
"attributes": "a",
"b": "b",
"c": "c"
}
*/
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
toJsonStr(Object obj)
:将对象转换为 JSON 字符串。obj
:需要转换为 JSON 的对象,可以是任意类型(如 JavaBean、Map、List)。- 返回值:返回 JSON 格式的字符串。
toJsonPrettyStr(Object obj)
:生成格式化的 JSON 字符串,便于阅读。obj
:需要格式化的对象。- 返回值:返回格式化后的 JSON 字符串。
作用: 常用于将后端数据(如对象、集合)转换为 JSON 格式,以供前端解析或输出日志时生成可读性高的 JSON 内容。
实际开发场景: 在 RESTful API 开发中,通常需要将业务数据转换为 JSON 字符串返回给前端。toJsonPrettyStr
方法适合用于生成调试日志或接口文档输出。
# 2. parseObj
和 parseArray
方法
parseObj
方法用于将 JSON 字符串解析为 JSONObject
,而 parseArray
则用于将 JSON 字符串解析为 JSONArray
。
# 示例:解析 JSON 字符串为 JSONObject
import cn.hutool.json.JSONUtil;
import cn.hutool.json.JSONObject;
public class JSONUtilExample {
public static void main(String[] args) {
String jsonStr = "{\"name\":\"John\", \"age\":30}";
// 解析 JSON 字符串为 JSONObject
JSONObject jsonObject = JSONUtil.parseObj(jsonStr);
// 获取字段值
String name = jsonObject.getStr("name");
int age = jsonObject.getInt("age");
System.out.println("姓名: " + name); // 输出: 姓名: John
System.out.println("年龄: " + age); // 输出: 年龄: 30
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
parseObj(String jsonStr)
:将 JSON 字符串解析为JSONObject
。jsonStr
:待解析的 JSON 字符串。- 返回值:返回解析后的
JSONObject
对象。
parseArray(String jsonStr)
:将 JSON 字符串解析为JSONArray
。jsonStr
:待解析的 JSON 字符串。- 返回值:返回解析后的
JSONArray
对象。
作用: 在处理来自外部的数据时(如前端传递的 JSON 数据),通常需要先将其解析为 JSONObject
或 JSONArray
进行进一步操作。
实际开发场景: 在表单提交、API 调用中,常用这些方法解析 JSON 字符串,从而提取所需的数据。
# 3. parseFromXml
和 toXmlStr
方法
parseFromXml
方法用于将 XML 字符串转换为 JSON,而 toXmlStr
则将 JSON 对象转换为 XML 格式。
# 示例:XML 与 JSON 的相互转换
import cn.hutool.json.JSONUtil;
import cn.hutool.json.JSONObject;
public class JSONUtilExample {
public static void main(String[] args) {
String xmlStr = "<person><name>John</name><age>30</age></person>";
// 将 XML 字符串解析为 JSON 对象
JSONObject jsonObject = JSONUtil.parseFromXml(xmlStr);
System.out.println("转换后的 JSON 对象: " + jsonObject);
// 输出: {"name":"John","age":30}
// 将 JSON 对象转换为 XML 字符串
String xml = JSONUtil.toXmlStr(jsonObject);
System.out.println("转换回的 XML 字符串: " + xml);
// 输出: <name>John</name><age>30</age>
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
parseFromXml(String xmlStr)
:将 XML 字符串解析为JSONObject
。xmlStr
:待解析的 XML 字符串。- 返回值:返回解析后的
JSONObject
对象。
toXmlStr(JSONObject jsonObject)
:将JSONObject
转换为 XML 字符串。jsonObject
:待转换的 JSON 对象。- 返回值:返回生成的 XML 字符串。
作用: 在与遗留系统或第三方系统对接时,可能需要在 XML 与 JSON 之间进行格式转换。
实际开发场景: 在数据迁移、系统集成时,经常需要将旧系统的 XML 格式数据转换为现代化的 JSON 格式,或反之。
# 4. toBean
和 toBeanList
方法
toBean
方法用于将 JSON 字符串转换为 JavaBean 对象,toBeanList
则用于将 JSON 数组转换为 JavaBean 列表。
# 示例:JSON 转 JavaBean
import cn.hutool.json.JSONUtil;
import cn.hutool.json.JSONObject;
import lombok.Data;
import java.util.List;
public class JSONUtilExample {
public static void main(String[] args) {
String jsonStr = "{\"name\":\"John\", \"age\":30}";
// 将 JSON 字符串转换为 JavaBean
Person person = JSONUtil.toBean(jsonStr, Person.class);
System.out.println("姓名: " + person.getName()); // 输出: 姓名: John
System.out.println("年龄: " + person.getAge()); // 输出: 年龄: 30
}
}
@Data
class Person {
private String name;
private int age;
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
toBean(String jsonStr, Class<T> beanClass)
:将 JSON 字符串转换为 JavaBean 对象。jsonStr
:待转换的 JSON 字符串。beanClass
:目标 JavaBean 的类型。- 返回值:返回转换后的 JavaBean 对象。
toBeanList(String jsonStr, Class<T> beanClass)
:将 JSON 数组字符串转换为 JavaBean 列表。jsonStr
:待转换的 JSON 数组字符串。beanClass
:目标 JavaBean 的类型。- 返回值:返回转换后的 JavaBean 列表。
作用: 在开发中经常需要将 JSON 数据映射为 Java 对象,便于业务逻辑处理。
实际开发场景: 在 RESTful API 中接收 JSON 格式的数据时,通常会将其转换为 JavaBean 进行处理。
# 5. readJSONObject
和 readJSONArray
方法
readJSONObject
和 readJSONArray
方法用于从文件中读取 JSON 数据,支持指定字符集。
# 示例:从文件读取 JSON 数据
import cn.hutool.json.JSONUtil;
import cn.hutool.json.JSONObject;
import java.io.File;
import java.nio.charset.StandardCharsets;
public class JSONUtilExample {
public static void main(String[] args) {
// 指定 JSON 文件路径
File file = new File("data.json");
// 从文件读取 JSON 对象
JSONObject jsonObject = JSONUtil.readJSONObject(file, StandardCharsets.UTF_8);
System.out.println("从文件读取的 JSON 对象: " + jsonObject);
}
}
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
readJSONObject(File file, Charset charset)
:从文件中读取 JSON
对象。
file
:JSON 文件。charset
:读取文件时使用的字符集。返回值:返回读取的
JSONObject
对象。readJSONArray(File file, Charset charset)
:从文件中读取 JSON 数组。file
:JSON 文件。charset
:读取文件时使用的字符集。- 返回值:返回读取的
JSONArray
对象。
作用: 在需要从配置文件或数据文件中读取 JSON 内容时非常有用。
实际开发场景: 在读取项目中的配置文件或静态数据时,可以使用这些方法从文件中加载 JSON 内容。
# 6. 其它常用方法
quote(String str)
:对字符串中的双引号进行转义处理,避免解析错误。wrap(Object obj)
:将任意对象包装为 JSON 对象。formatJsonStr(String jsonStr)
:格式化 JSON 字符串,提升可读性。