Hutool 的完整 JSON 工具类示例

Hutool 的完整 JSON 工具类示例,覆盖:

  • Bean → JSON

  • List → JSON

  • JSON → Bean

  • JSON → List(支持泛型)

  • JSON → Map / List<Map>

Hutool 的 API 非常简洁,一行即可搞定,适合"快速开发"场景。


1️⃣ Maven 依赖

复制代码
<dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.8.25</version>
</dependency>

2️⃣ 示例实体类(同上)

复制代码
@Data
public class User {
    private Long id;
    private String name;
    private LocalDateTime createTime;
}

3️⃣ 工具类封装(可选,一行即可)

Hutool 已提供静态方法,无需额外封装;下面给出一个简单包装,方便统一异常处理:

复制代码
import cn.hutool.json.JSONUtil;
import cn.hutool.json.TypeReference;

import java.util.List;
import java.util.Map;

public class HutoolJsonUtil {

    /** 对象 → JSON */
    public static String toJson(Object obj) {
        return JSONUtil.toJsonStr(obj);
    }

    /** JSON → Bean */
    public static <T> T toBean(String json, Class<T> clazz) {
        return JSONUtil.toBean(json, clazz);
    }

    /** JSON → List<Bean> */
    public static <T> List<T> toList(String json, Class<T> clazz) {
        return JSONUtil.toList(JSONUtil.parseArray(json), clazz);
    }

    /** JSON → Map */
    public static Map<String, Object> toMap(String json) {
        return JSONUtil.toBean(json, new TypeReference<Map<String, Object>>() {});
    }

    /** JSON → List<Map> */
    public static List<Map<String, Object>> toListMap(String json) {
        return JSONUtil.toBean(json, new TypeReference<List<Map<String, Object>>>() {});
    }
}

4️⃣ 使用示例

复制代码
public class HutoolJsonDemo {
    public static void main(String[] args) {
        // 构造数据
        User user1 = new User(1L, "张三", LocalDateTime.now());
        User user2 = new User(2L, "李四", LocalDateTime.now());
        List<User> userList = List.of(user1, user2);

        // 1. Bean → JSON
        String userJson = HutoolJsonUtil.toJson(user1);
        System.out.println("Bean → JSON: " + userJson);

        // 2. List → JSON
        String listJson = HutoolJsonUtil.toJson(userList);
        System.out.println("List → JSON: " + listJson);

        // 3. JSON → Bean
        User userObj = HutoolJsonUtil.toBean(userJson, User.class);
        System.out.println("JSON → Bean: " + userObj);

        // 4. JSON → List<Bean>
        List<User> users = HutoolJsonUtil.toList(listJson, User.class);
        System.out.println("JSON → List<Bean>: " + users);

        // 5. JSON → Map / List<Map>
        Map<String, Object> map = HutoolJsonUtil.toMap(userJson);
        System.out.println("JSON → Map: " + map);
    }
}

5️⃣ 控制台输出示例复制

复制代码
Bean → JSON: {"id":1,"name":"张三","createTime":"2024-06-01 15:30:00"}
List → JSON: [{"id":1,"name":"张三","createTime":"2024-06-01 15:30:00"},{"id":2,"name":"李四","createTime":"2024-06-01 15:30:00"}]
JSON → Bean: User(id=1, name=张三, createTime=2024-06-01T15:30)
JSON → List<Bean>: [User(...), User(...)]
JSON → Map: {id=1, name=张三, createTime=2024-06-01 15:30:00}

✅ 总结

场景 Hutool 方法
Bean → JSON JSONUtil.toJsonStr(obj)
List → JSON JSONUtil.toJsonStr(list)
JSON → Bean JSONUtil.toBean(json, Bean.class)
JSON → List JSONUtil.toList(JSONUtil.parseArray(json), Bean.class)
JSON → Map JSONUtil.toBean(json, new TypeReference<>(){})
相关推荐
侃侃_天下3 天前
最终的信号类
开发语言·c++·算法
echoarts3 天前
Rayon Rust中的数据并行库入门教程
开发语言·其他·算法·rust
Aomnitrix3 天前
知识管理新范式——cpolar+Wiki.js打造企业级分布式知识库
开发语言·javascript·分布式
每天回答3个问题3 天前
UE5C++编译遇到MSB3073
开发语言·c++·ue5
伍哥的传说3 天前
Vite Plugin PWA – 零配置构建现代渐进式Web应用
开发语言·前端·javascript·web app·pwa·service worker·workbox
小莞尔3 天前
【51单片机】【protues仿真】 基于51单片机八路抢答器系统
c语言·开发语言·单片机·嵌入式硬件·51单片机
我是菜鸟0713号3 天前
Qt 中 OPC UA 通讯实战
开发语言·qt
JCBP_3 天前
QT(4)
开发语言·汇编·c++·qt·算法
Brookty3 天前
【JavaEE】线程安全-内存可见性、指令全排序
java·开发语言·后端·java-ee·线程安全·内存可见性·指令重排序
百锦再3 天前
[特殊字符] Python在CentOS系统执行深度指南
开发语言·python·plotly·django·centos·virtualenv·pygame