当前位置: 首页 > news >正文

参照Spring Boot后端框架实现序列化工具类

本文参照Jackson实现序列化工具类,旨在于简化开发

JacksonUtil.class
public class JacksonUtil {
    private JacksonUtil() {

    }

    /**
     * 单例
     */
    private final static ObjectMapper OBJECT_MAPPER;

    static {
        OBJECT_MAPPER = new ObjectMapper();
    }

    private static ObjectMapper getObjectMapper() {
        return OBJECT_MAPPER;
    }

    private static  <T> T tryParse(Callable<T> parser) {
        return tryParse(parser, JacksonException.class);
    }

    private static  <T> T tryParse(Callable<T> parser, Class<? extends Exception> check) {
        try {
            return parser.call();
        } catch (Exception var4) {
            if (check.isAssignableFrom(var4.getClass())) {
                throw new JsonParseException(var4);
            }

            throw new IllegalStateException(var4);
        }
    }

    /**
     * 序列化方法
     */
    public static String writeValueAsString(Object object) {
        return JacksonUtil.tryParse(() -> {
            return JacksonUtil.getObjectMapper().writeValueAsString(object);
        });
    }

    /**
     * 反序列化
     */
    public static <T> T readValue(String content, Class<T> valueType) {
        return JacksonUtil.tryParse(() -> {
            return JacksonUtil.getObjectMapper().readValue(content, valueType);
        });

    }

    /**
     * 反序列化 List
     */
    public static <T> T readListValue(String content, Class<?> paramClasses) {
        JavaType javaType = JacksonUtil.getObjectMapper().getTypeFactory()
                .constructParametricType(List.class, paramClasses);
        return JacksonUtil.tryParse(() -> {
            return JacksonUtil.getObjectMapper().readValue(content, javaType);
        });
    }

}

相关文章:

  • [特殊字符] 第十一讲 | 空间回归模型实战:SAR / SEM / GWR逐个击破
  • python办公自动化------word文件的操作
  • xlinx GT传输器学习
  • Spring Cloud 远程调用
  • 初识SpringAI(接入硅基流动deepseek)
  • <C#>在 C# .NET 中,使用 LoggerExtensions方法创建日志
  • 修改Todesk软件显示的设备码的办法
  • 前端请求设置credentials: ‘include‘导致的cors问题
  • 网络安全1
  • Git中git rebase 和 git merge使用及区别
  • Python小程序 - 文件处理3:正则表达式
  • 珠江桥牌试吃活动 一酱承粤味谷雨话新炊
  • Elasticsearch 系列专题 - 第四篇:聚合分析
  • LangGraph 使用指南
  • jwt.io学习
  • 如何在gitee/github上面搭建obsidian的图床
  • minio改成https+域名访问
  • 基于Python电影数据的实时分析可视化系统(源码+lw+部署文档+讲解),源码可白嫖!
  • STM32单片机入门学习——第33节: [10-3] 软件I2C读写MPU6050
  • SSRF漏洞公开报告分析
  • 国内真正的永久建站/怎么制作公司网页
  • 南宁市做公司网站/深圳大鹏新区葵涌街道
  • 做网站是用wordpress还是DW/外链查询工具
  • 手表网站布局/百度推广登陆网址
  • 放网站的服务器吗/龙岗百度快速排名
  • 手机wap网站建设/百度推广手机客户端