工具类-JacksonUtils

使用Jackson进行 JSON 序列化和反序列化 在Spring应用程序中,您可以通过Maven添加Jackson依赖,并创建一个工具类来封装对象的序列化和反序列化方法。 阅读详情
import com.fasterxml.jackson.annotation.JsonInclude.Include;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.JsonParser.Feature;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.databind.type.CollectionType;

import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.List;
import java.util.Map;
import java.util.TimeZone;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * JacksonUtils
 *
 * @author ygr
 * @version 1.0
 * @date 2021/8/16 15:04
 */
public class JacksonUtils {

    static final Logger LOG = LoggerFactory.getLogger(JacksonUtils.class);

    private static final ObjectMapper MAPPER = new ObjectMapper();


    static {
        MAPPER.setTimeZone(TimeZone.getTimeZone("GMT+8"));
        MAPPER.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false);
        MAPPER.setSerializationInclusion(Include.NON_NULL);
        MAPPER.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false);
        MAPPER.configure(SerializationFeature.INDENT_OUTPUT, false);
        MAPPER.setDateFormat(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"));
        MAPPER.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
        MAPPER.configure(Feature.ALLOW_SINGLE_QUOTES, true);
    }

    private JacksonUtils() {
    }

    /**
     * 将实体对象转换为json字符串
     *
     * @param entity 实体对象
     * @param <T>    泛型
     * @return json string
     * @throws JsonProcessingException JsonProcessingException
     */
    public static <T> String obj2json(T entity) throws JsonProcessingException {
        return MAPPER.writeValueAsString(entity);
    }

    /**
     * 将实体对象转换为json字符串
     *
     * @param entity 实体对象
     * @param pretty 是否转换为美观格式
     * @param <T>    泛型
     * @return json string
     * @throws JsonProcessingException JsonProcessingException
     */
    public static <T> String obj2json(T entity, boolean pretty) throws JsonProcessingException {
        if (pretty) {
            return MAPPER.writerWithDefaultPrettyPrinter().writeValueAsString(entity);
        }
        return MAPPER.writeValueAsString(entity);
    }

    /**
     * 将实体对象转换为字节数组
     *
     * @param entity 实体对象
     * @param <T>    泛型
     * @return json string
     * @throws JsonProcessingException JsonProcessingException
     */
    public static <T> byte[] obj2jsonBytes(T entity) throws JsonProcessingException {
        return MAPPER.writeValueAsBytes(entity);
    }

    /**
     * 将实体类转换为JsonNode对象
     *
     * @param entity 实体对象
     * @param <T>    泛型
     * @return JsonNode
     */
    public static <T> JsonNode obj2node(T entity) {
        return MAPPER.valueToTree(entity);
    }

    /**
     * 将实体对象写入文件
     *
     * @param filepath 文件绝对路径
     * @param entity   实体对象
     * @param <T>      泛型
     * @return 写入成功:true,否则:false
     */
    public static <T> boolean write2jsonFile(String filepath, T entity) {
        File file = new File(filepath);
        if (!file.exists()) {
            try {
                boolean success = file.createNewFile();
                if (!success) {
                    LOG.error("[write2jsonFile]-创建文件失败!路径:{}", filepath);
                    return false;
                }
            } catch (IOException e) {
                LOG.error("[write2jsonFile]-创建文件失败!路径:{},失败原因:{}", filepath, e.getMessage());
                return false;
            }
        }
        return write2jsonFile(new File(filepath), entity);
    }

    /**
     * 将实体对象写入指定文件
     *
     * @param file   文件
     * @param entity 实体对象
     * @param <T>    泛型
     * @return 写入成功:true,否则:false
     */
    public static <T> boolean write2jsonFile(File file, T entity) {
        try {
            MAPPER.writeValue(file, entity);
            return true;
        } catch (IOException e) {
            LOG.error("[write2jsonFile]-写入文件失败!路径:{},失败原因:{}", file.getAbsolutePath(), e.getMessage());
        }
        return false;
    }

    /**
     * 将json字符串转换为实体类对象
     *
     * @param json json字符串
     * @param type 实体对象类型
     * @param <T>  泛型
     * @return 转换成功后的对象
     * @throws JsonProcessingException JsonProcessingException
     */
    public static <T> T json2obj(String json, Class<T> type) throws JsonProcessingException {
        return MAPPER.readValue(json, type);
    }

    /**
     * 将json字符串转换为map
     *
     * @param json json字符串
     * @return Map
     * @throws JsonProcessingException JsonProcessingException
     */
    @SuppressWarnings("unchecked")
    public static Map<String, Object> json2map(String json) throws JsonProcessingException {
        return (Map<String, Object>) MAPPER.readValue(json, Map.class);
    }
    

    /**
     * 泛化转换方式,此方式最为强大、灵活
     * <p>
     * example:
     * <p>
     * {@code Map<String, List<UserInfo>> listMap = genericConvert(jsonStr, new TypeReference<Map<String, List<UserInfo>>>() {});}
     *
     * @param json json字符串
     * @param type type
     * @param <T>  泛化
     * @return T
     * @throws JsonProcessingException JsonProcessingException
     */
    public static <T> T genericConvert(String json, TypeReference<T> type) throws JsonProcessingException {
        return MAPPER.readValue(json, type);
    }


    /**
     * 将map转换为实体类对象
     *
     * @param map  map
     * @param type 实体对象类型
     * @param <T>  泛型
     * @return 实体对象
     */
    public static <T> T map2obj(Map map, Class<T> type) {
        return MAPPER.convertValue(map, type);
    }

    /**
     * 将文件内容转为实体类对象
     *
     * @param file 文件
     * @param type 实体类类型
     * @param <T>  泛型
     * @return 实体类对象
     * @throws IOException IOException
     */
    public static <T> T file2obj(File file, Class<T> type) throws IOException {
        return MAPPER.readValue(file, type);
    }

    /**
     * 将url指向的资源转换为实体类对象
     *
     * @param url  url
     * @param type 实体类对象类型
     * @param <T>  泛型
     * @return 实体类对象
     * @throws IOException IOException
     */
    public static <T> T urlResource2obj(URL url, Class<T> type) throws IOException {
        return MAPPER.readValue(url, type);
    }

    /**
     * 将json字符串转换为实体类集合
     *
     * @param json json字符串
     * @param type 实体对象类型
     * @param <T>  泛型
     * @return list集合
     * @throws JsonProcessingException JsonProcessingException
     */
    public static <T> List<T> json2list(String json, Class<T> type) throws JsonProcessingException {
        CollectionType collectionType = MAPPER.getTypeFactory().constructCollectionType(List.class, type);
        return MAPPER.readValue(json, collectionType);
    }


    /**
     * 将json字符串转换为JsonNode对象
     *
     * @param json json字符串
     * @return JsonNode对象
     * @throws JsonProcessingException JsonProcessingException
     */
    public static JsonNode json2node(String json) throws JsonProcessingException {
        return MAPPER.readTree(json);
    }


    /**
     * 检查字符串是否是json格式
     *
     * @param str 待检查字符串
     * @return 是:true,否:false
     */
    public static boolean isJsonString(String str) {
        try {
            MAPPER.readTree(str);
            return true;
        } catch (Exception e) {
            if (LOG.isDebugEnabled()) {
                LOG.debug("[isJsonString]-检查字符串是否是json格式...{}", e.getMessage());
            }
            return false;
        }
    }

    /**
     * 打印json到控制台
     *
     * @param obj    需要打印的对象
     * @param pretty 是否打印美观格式
     * @param <T>    泛型
     */
    public static <T> void printJson(T obj, boolean pretty) {
        try {
            if (pretty) {
                System.out.println(MAPPER.writerWithDefaultPrettyPrinter().writeValueAsString(obj));
            } else {
                System.out.println(MAPPER.writeValueAsString(obj));
            }
        } catch (JsonProcessingException e) {
            e.printStackTrace();
        }
    }
}

Json-最全的JacksonUtils工具类 JSON 字符串转 CommonResult 的集合 (readValueAsListOfCommonResults): 将 JSON 字符串转。JSON 字符串转集合 (readValueAsCollection): 将 JSON 字符串转换为指定类型的集合。对象转 JSON 字符串 (writeValueAsString): 将 Java 对象转换为 JSON 字符串。JSON 字符串转对象 (readValue): 将 JSON 字符串转换为指定的 Java 类型。 阅读详情

相关推荐

Json-JacksonUtils工具类

CommonResult 和 List 类型,同时也可以将 Java 对象转换为。在这个示例中,我们定义了一个 User 类,并使用 JacksonUtils 中的方法来将 JSON 字符串转换为。为了创建一个通用的 Jackson 工具类,我们可以定义一个名为 JacksonUtils 的工具类,该类将提。对象的转换、Java 对象到 JSON 的转换、以及更复杂的类型如 CommonResult 的转换。CommonResult 类定义。

兴趣是最好的老师 289

Java常用的工具类

IOUtils IOUtils: Apache Commons IO用来处理输入-输出流 详情介绍: https://blog.youkuaiyun.com/l2580258/article/details/89227761 添加的依赖: <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</v

m0_58680865的博客 900

Json-JacksonUtils工具类扩展(jackson转换Page)

在这个示例中,我们定义了一个 Page 类,并使用 JacksonUtils 中的方法来将 JSON 字符串转换。接下来,我们需要扩展之前的 JacksonUtils 工具类,以便支持 Page 类型的序列化和反序列化。如果你想使用 Jackson 来处理分页数据,通常会涉及到将分页结果转换成 JSON 或者从 JSON 反。这里我们假设你正在使用一个类似于 Page 的分页模型,它可以包含分页数据。为 Page<User> 类型,同时也可以将 Page 对象转换为 JSON 字符串。

兴趣是最好的老师 408

JSON工具类JacksonUtils

json转对象,对象转json,json转list,json和对象互转

Khazix的博客 507

OpenWrt国内镜像源一键切换脚本:清华/阿里/中科大源全搞定

本文介绍了OpenWrt国内镜像源一键切换脚本,支持清华、阿里和中科大三大源,自动识别设备架构和系统版本,显著提升软件包安装速度和成功率。脚本包含架构自动识别、版本适配、多源选择和配置备份等功能,适用于x86_64、ramips/mt7621等常见架构,帮助用户解决海外源访问缓慢的问题。

g5h6i的博客 1176

电路课设-音响分频器电路设计

(一)题目简介 1.一阶分频器电路设计 假定高音和低音扬声器均等效为 16 欧姆电阻,设计如图 2 的简单分频器电 路,要求高低频分界(两个滤波器的截止频率)为 5kHz。 1) 写出高音扬声器和低音扬声器电压对于 vs 的传递函数,确定电路中电 容 C 和电感 L 的元件值;2)利用 AC 频率扫描分析求出两个扬声器电压的频率响应曲线,验证计算 结果。用包含高低频成分的电压 vs 激励进行测量验证。 3)计算并利用 EWB 仿真证明从 vs 看进去的阻抗为一常数 16 欧姆。

weixin_53507617的博客 1万+

Jackson常用方法以及jacksonUtil工具类

前言:项目中我们通常使用ajax返回json数据格式的形式进行前后端数据交互,所以会用到java数据json数据互相转化,通常我们的做法是在项目中创建一个工具类进行转化处理。如下:我的demo包含了项目中常用的jacksonUtil类,以及常用的JSON JAVA处理数据转化处理方法。项目结构以及引用jar包如下,jar包中的junit是用于单元测试,与jackson及其相关的包无关。每个部分我都

黄三yeah的Java技术空间 3万+

ZYNQ程序固化实战:从BOOT.bin生成到QSPI/SD卡双启动模式详解

本文详细解析了ZYNQ 7000系列程序固化的完整流程,重点解决了程序断电丢失问题。通过实战演示,从生成BOOT.bin文件到配置QSPI与SD卡双启动模式,逐步指导开发者实现程序在外部存储中的永久驻留,确保产品脱离调试器独立运行。

weixin_29193259的博客 517

分享一个封装的JacksonUtil工具类

前言 如果不用阿里的fastJson,Springboot自带的Jackson即可完成JSON的序列化和反序列化。分享一个工具类,可以统一格式化LocalDate,LocalDateTime,LocalTime类型为我们熟悉的格式,如果不设置一下,则在序列化时,日期类型会被序列化为枚举样式。常用的对象和集合类的转化都可以通过这个类来完成。 public class JacksonUtil { private static final Logger logger = LoggerFactory.ge

weixin_41386753的博客 1748

UM982上位机调试【精简版】

分享一些关于UM982卫导模块上位机调试的简快捷单小功能。

在线求职中... 1万+

GX Works2系统启动失败排查指南:从环境配置到修复方案

在工业自动化与PLC编程调试中,软件启动异常是常见的工程痛点。当开发工具因系统环境配置不当而频繁报错时,往往不是简单的重启能解决的。运行库缺失、区域设置错误、临时目录失效或系统服务被禁用,都可能导致编程软件无法完成初始化流程。掌握从基础环境检查到系统组件修复的系统性排查思路,是提升工控开发效率的关键能力。本文从软件初始化原理出发,结合Windows系统维护实践,梳理一套适用于工业软件启动故障的通用诊断方法,并自然聚焦到三菱GX Works2常见启动失败问题的实际处理,帮助工程师快速定位并解决环境性故障,保障

weixin_42567046的博客 463

JacksonUtils工具类

json

qingcyb的博客 3237

CCF CSP历年题解(python)

菜鸡一枚,没参加过算法竞赛,单纯为了抵研究生考试复试才刷题,通过写博客记录下来,希望能和大家互相交流,代码质量不高,大家见谅。 因为考研等原因,题目不定期更新… 第一题 201312-1出现最多次数的数 ...

weixin_44690402的博客 5004

【java】JacksonUtils工具类

【代码】【java】JacksonUtils工具类。

muguazhi的博客 539

AI智能体丨使用Coze生成自媒体短视频分镜生成器(附保姆级教程)

【短视频分镜脚本生成器】是一款由Coze平台开发出来的智能体,可快速解析某音/某书视频或本地文件,自动生成专业分镜脚本。用户只需输入视频链接或上传文件,系统即会分析镜头节奏、叙事逻辑和画面内容,输出包含画面、模板和话术参考的标准化脚本(支持3分钟内视频)。该工具还能生成HTML网页和可下载图片,提供可视化呈现。工作流程包括视频解析、帧提取、AI画面理解、脚本生成和网页制作,大幅提升短视频创作效率。

李同学Lino的博客 1535

Win10 系统下VisualStudio2022 配置Open3D-0.18.0(C++)

Win10 系统下VisualStudio2022 配置Open3D-0.18.0

点云侠的博客 2657

后端代码解析工具类篇(until)JacksonUtils

个人理解类提供了一种简便的方式来处理 JSON 数据的序列化和反序列化,同时提供了异常处理,使得在遇到错误时能够给出清晰的反馈。这样的工具类可以在任何需要处理 JSON 的 Java 应用程序中被重用。: 这个方法接受一个 Java 对象作为参数,并将其序列化为 JSON 格式的字符串。如果序列化过程中发生错误,例如对象包含无法序列化的属性,方法将捕获 JsonProcessingException 异常,打印异常堆栈信息,并返回一个空字符串。

qq_73855234的博客 1493

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

【Java】JacksonUtils(Jackson ObjectMapper 工具类)

Java Jackson ObjectMapper 工具类 import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.TreeNode; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.

XKIND'S 博客 1274

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

工具类使用

集合工具类: CollectionUtils 字符串工具类: StringUtils String字符串与对象的转换 JacksonUtils

z_k_h的博客 401

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

JacksonUtils

Json格式化转换工具类 (日期格式化) 引言 之前在使用 OkHttp 进行Java接口调用的时候, 出现了Json格式日期格式不对应,导致 OkHttp 导致日期格式序列化异常,解决办法就是保证远程接收端Vo类的日期格式要与我们发送端的日期格式一直。用OkHttp自带的 JSONObject 使用的是alibaba.fastjson。 感觉JSONObject.toJSONString() 自带的fastjson不太用,在类上加上以下注解 ,仍然会出现日期统一问题, 于是引入Jackson。 @D

yiqiu1959的博客 1283

Java项目常用的工具类

使用常见的工具类来完成常见的细节操作: IOUtils IOUtils: Apache Commons IO用来处理输入-输出流 详情介绍: https://blog.youkuaiyun.com/l2580258/article/details/89227761 依赖 <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <vers

蹊源的奇思妙想的博客 2782

mysql常用的工具类_Web常用工具类

人手必备的java工具类,中间件com.google.guavaguava28.1-jreorg.apache.commonscommons-collections44.4org.apache.commonscommons-lang3com.alibabafastjson1.2.62Json工具类ServerResponse - 通用Json响应对象ResponseCode是封装code和desc...

weixin_39978863的博客 214

String、Object、List<T> 之间转换的工具类

【代码】String、Object、List 之间转换的工具类。

weixin_42562259的博客 458

Java json反序列化

package com.nuanshui.frms.exchange.utils;import com.fasterxml.jackson.core.JsonGenerator; import com.fasterxml.jackson.core.JsonParseException; import com.fasterxml.jackson.core.JsonProcessingException

_binlong的博客 846

Jackson序列化和反序列化

1、添加maven依赖 可行的依赖 <!-- Jackson序列化和反序列化 --> <dependency> <groupId>com.dianping.dpsf</groupId> <artifactId>dpsf-net</artifactId> <version>2.10.4.1</version> </dependency> 在添加依赖的时候碰到过坑,下

qq_35091353的博客 819

java to xml 框架_Jackson_Java和Json/XML互转的开源框架

[在Java项目中將一个对象转换成一段Json格式的字符串是非常常见的,能够实现这种需求的工具包也比较多,例如Gson、JSON-lib、Jackson等等。本文主要介绍Jackson的使用,Jac记得当时我在优化同事的Oauth能力开放项目的时候,需要把Java对象转化为Json和XML格式。当时是花了一天的时间,尝试了各种开源框架,最终选用了Jackson(官网:http://jackson....

weixin_31076517的博客 338
上一篇: maven离线环境配置(纯内网)
下一篇: 记一次接口规范导致的反序列化错误问题
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值