sunny123456

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  1796 随笔 :: 22 文章 :: 24 评论 :: 226万 阅读
< 2025年3月 >
23 24 25 26 27 28 1
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 1 2 3 4 5

问:ObjectMapper 工具类
答:

ObjectMapper 是 Jackson 库中的一个核心类,它提供了丰富的功能来在 Java 对象和 JSON 数据之间进行转换。Jackson 是一个流行的 Java 库,用于处理 JSON 数据。ObjectMapper 是一个非常灵活的类,它支持多种数据格式化和反序列化选项,并且可以轻松地集成到任何 Java 应用程序中。

下面是一个简单的 ObjectMapper 工具类示例,展示了如何使用这个类来序列化和反序列化 Java 对象。请注意,这个示例假设你已经将 Jackson 库添加到了你的项目依赖中。

javaimport com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;

public class ObjectMapperUtil {

    private static final ObjectMapper objectMapper = new ObjectMapper();

    // 私有构造函数,防止实例化
    private ObjectMapperUtil() {
    }

    // 将 Java 对象转换为 JSON 字符串
    public static String toJson(Object obj) throws JsonProcessingException {
        return objectMapper.writeValueAsString(obj);
    }

    // 将 JSON 字符串转换为 Java 对象
    public static <T> T fromJson(String json, Class<T> clazz) throws IOException {
        return objectMapper.readValue(json, clazz);
    }

    // 可以添加更多实用的方法,比如处理复杂的数据类型或配置 ObjectMapper
}

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.IOException;

public class ObjectMapperUtil {

    private static final ObjectMapper objectMapper = new ObjectMapper();

    // 私有构造函数,防止实例化
    private ObjectMapperUtil() {
    }

    // 将 Java 对象转换为 JSON 字符串
    public static String toJson(Object obj) throws JsonProcessingException {
        return objectMapper.writeValueAsString(obj);
    }

    // 将 JSON 字符串转换为 Java 对象
    public static <T> T fromJson(String json, Class<T> clazz) throws IOException {
        return objectMapper.readValue(json, clazz);
    }

    // 可以添加更多实用的方法,比如处理复杂的数据类型或配置 ObjectMapper
}

使用示例

假设你有一个简单的 Java 类 Person,如下所示:

javapublic class Person {
    private String name;
    private int age;

    // 构造函数、getter 和 setter 省略
}

public class Person {
    private String name;
    private int age;

    // 构造函数、getter 和 setter 省略
}

你可以使用 ObjectMapperUtil 类来序列化和反序列化 Person 对象:

javapublic class Main {
    public static void main(String[] args) {
        Person person = new Person();
        person.setName("John Doe");
        person.setAge(30);

        try {
            // 将 Person 对象转换为 JSON 字符串
            String json = ObjectMapperUtil.toJson(person);
            System.out.println(json); // 输出 JSON 字符串

            // 将 JSON 字符串转换回 Person 对象
            Person personFromJson = ObjectMapperUtil.fromJson(json, Person.class);
            System.out.println(personFromJson.getName()); // 输出: John Doe
        } catch (JsonProcessingException | IOException e) {
            e.printStackTrace();
        }
    }
}

public class Main {
    public static void main(String[] args) {
        Person person = new Person();
        person.setName("John Doe");
        person.setAge(30);

        try {
            // 将 Person 对象转换为 JSON 字符串
            String json = ObjectMapperUtil.toJson(person);
            System.out.println(json); // 输出 JSON 字符串

            // 将 JSON 字符串转换回 Person 对象
            Person personFromJson = ObjectMapperUtil.fromJson(json, Person.class);
            System.out.println(personFromJson.getName()); // 输出: John Doe
        } catch (JsonProcessingException | IOException e) {
            e.printStackTrace();
        }
    }
}

这个工具类是一个很好的起点,但请注意,根据你的需求,你可能需要对其进行扩展,例如添加自定义的序列化器或反序列化器,配置 ObjectMapper 以使用特定的日期格式等。

posted on   sunny123456  阅读(104)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2023-07-31 Mybatis学习(1)——mybatis介绍 & 入门案例 & 全局配置文件详解 & 增删改查 + mybatis事务 & mapper.xml文件#{} 和 ${} & 动态SQL入门
2023-07-31 Mybatis中的Mapper.xml映射文件sql查询接收多个参数 分页查询 sql语句动态生成的时候,使用${},sql语句中某个参数进行占位的时候用#{}
2023-07-31 Mapper.xml详解 一对一 多对一 多对多
2023-07-31 在Mapper.xml中写复杂的动态SQL语句
2023-07-31 mybatis mapper.xml将表明 列名 通过参数传递,mybatis动态sql, 在传入“表名”时,要使用${tableName},不能用#{tableName} 所以参数如果就是执行sql 语句可以是 ${sql}
2023-07-31 window.open()参数传递及获取
2023-07-31 window.open()打开窗口的几种方式,a标签的href
点击右上角即可分享
微信分享提示