使用Jackson进行 JSON 序列化和反序列化

在Spring应用程序中,您可以通过Maven添加Jackson依赖,并创建一个工具类来封装对象的序列化和反序列化方法。以下是详细步骤:

1. 引入 Jackson 依赖

如果使用 Maven,您可以在 pom.xml 文件中添加以下依赖:

xml 复制代码
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.16.1</version>
        </dependency>

2. 创建 JacksonUtils 工具类

java 复制代码
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

public class JacksonUtils {

    private static final ObjectMapper objectMapper = new ObjectMapper();

    public static String serializeObject(Object object) {
        try {
            return objectMapper.writeValueAsString(object);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
            return null;
        }
    }

    public static <T> T deserializeObject(String json, Class<T> clazz) {
        try {
            return objectMapper.readValue(json, clazz);
        } catch (JsonProcessingException e) {
            e.printStackTrace();
            return null;
        }
    }
}

3. 使用 JacksonUtils 进行序列化和反序列化操作

在应用程序中使用 JacksonUtils 类进行对象的序列化和反序列化。

java 复制代码
public class Main {

    public static void main(String[] args) {
        // Serialize object to JSON
        YourClass obj = new YourClass();
        String json = JacksonUtils.serializeObject(obj);

        // Deserialize JSON to object
        YourClass newObj = JacksonUtils.deserializeObject(json, YourClass.class);
    }
}

4. 注意事项

在反序列化发现结果为null,可能由于 Jackson 库在反序列化对象时需要合适的构造函数来实例化对象。
解决方法:

确保 YourClass 类中存在默认构造函数(无参数构造函数),因为 Jackson 在反序列化过程中通常会使用默认构造函数来创建对象。

java 复制代码
public class YourClass {
    // 默认构造函数
    public YourClass() {
    }
    
}
相关推荐
guestsun2 小时前
SpringBoot七大事务失效场景分析
java·spring boot·mybatis
毕设源码-邱学长7 小时前
【开题答辩全过程】以 基于Java的学校住宿管理系统的设计与实现为例,包含答辩的问题和答案
java·开发语言
兑生9 小时前
【灵神题单·贪心】1481. 不同整数的最少数目 | 频率排序贪心 | Java
java·开发语言
daidaidaiyu9 小时前
一文学习 Spring 声明式事务源码全流程总结
java·spring
零雲10 小时前
java面试:了解抽象类与接口么?讲一讲它们的区别
java·开发语言·面试
左左右右左右摇晃13 小时前
Java并发——synchronized锁
java·开发语言
sxlishaobin14 小时前
Java I/O 模型详解:BIO、NIO、AIO
java·开发语言·nio
彭于晏Yan14 小时前
Spring AI(二):入门使用
java·spring boot·spring·ai
有一个好名字14 小时前
vibe codeing 开发流程
java
兑生14 小时前
【灵神题单·贪心】3745. 三元素表达式的最大值 | 排序贪心 | Java
java·开发语言