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工具类
CommonResult 和 List 类型,同时也可以将 Java 对象转换为。在这个示例中,我们定义了一个 User 类,并使用 JacksonUtils 中的方法来将 JSON 字符串转换为。为了创建一个通用的 Jackson 工具类,我们可以定义一个名为 JacksonUtils 的工具类,该类将提。对象的转换、Java 对象到 JSON 的转换、以及更复杂的类型如 CommonResult 的转换。CommonResult 类定义。
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
Json-JacksonUtils工具类扩展(jackson转换Page)
在这个示例中,我们定义了一个 Page 类,并使用 JacksonUtils 中的方法来将 JSON 字符串转换。接下来,我们需要扩展之前的 JacksonUtils 工具类,以便支持 Page 类型的序列化和反序列化。如果你想使用 Jackson 来处理分页数据,通常会涉及到将分页结果转换成 JSON 或者从 JSON 反。这里我们假设你正在使用一个类似于 Page 的分页模型,它可以包含分页数据。为 Page<User> 类型,同时也可以将 Page 对象转换为 JSON 字符串。
JSON工具类JacksonUtils
json转对象,对象转json,json转list,json和对象互转
OpenWrt国内镜像源一键切换脚本:清华/阿里/中科大源全搞定
本文介绍了OpenWrt国内镜像源一键切换脚本,支持清华、阿里和中科大三大源,自动识别设备架构和系统版本,显著提升软件包安装速度和成功率。脚本包含架构自动识别、版本适配、多源选择和配置备份等功能,适用于x86_64、ramips/mt7621等常见架构,帮助用户解决海外源访问缓慢的问题。
电路课设-音响分频器电路设计
(一)题目简介 1.一阶分频器电路设计 假定高音和低音扬声器均等效为 16 欧姆电阻,设计如图 2 的简单分频器电 路,要求高低频分界(两个滤波器的截止频率)为 5kHz。 1) 写出高音扬声器和低音扬声器电压对于 vs 的传递函数,确定电路中电 容 C 和电感 L 的元件值;2)利用 AC 频率扫描分析求出两个扬声器电压的频率响应曲线,验证计算 结果。用包含高低频成分的电压 vs 激励进行测量验证。 3)计算并利用 EWB 仿真证明从 vs 看进去的阻抗为一常数 16 欧姆。
Jackson常用方法以及jacksonUtil工具类
前言:项目中我们通常使用ajax返回json数据格式的形式进行前后端数据交互,所以会用到java数据json数据互相转化,通常我们的做法是在项目中创建一个工具类进行转化处理。如下:我的demo包含了项目中常用的jacksonUtil类,以及常用的JSON JAVA处理数据转化处理方法。项目结构以及引用jar包如下,jar包中的junit是用于单元测试,与jackson及其相关的包无关。每个部分我都
ZYNQ程序固化实战:从BOOT.bin生成到QSPI/SD卡双启动模式详解
本文详细解析了ZYNQ 7000系列程序固化的完整流程,重点解决了程序断电丢失问题。通过实战演示,从生成BOOT.bin文件到配置QSPI与SD卡双启动模式,逐步指导开发者实现程序在外部存储中的永久驻留,确保产品脱离调试器独立运行。
分享一个封装的JacksonUtil工具类
前言 如果不用阿里的fastJson,Springboot自带的Jackson即可完成JSON的序列化和反序列化。分享一个工具类,可以统一格式化LocalDate,LocalDateTime,LocalTime类型为我们熟悉的格式,如果不设置一下,则在序列化时,日期类型会被序列化为枚举样式。常用的对象和集合类的转化都可以通过这个类来完成。 public class JacksonUtil { private static final Logger logger = LoggerFactory.ge
UM982上位机调试【精简版】
分享一些关于UM982卫导模块上位机调试的简快捷单小功能。
GX Works2系统启动失败排查指南:从环境配置到修复方案
在工业自动化与PLC编程调试中,软件启动异常是常见的工程痛点。当开发工具因系统环境配置不当而频繁报错时,往往不是简单的重启能解决的。运行库缺失、区域设置错误、临时目录失效或系统服务被禁用,都可能导致编程软件无法完成初始化流程。掌握从基础环境检查到系统组件修复的系统性排查思路,是提升工控开发效率的关键能力。本文从软件初始化原理出发,结合Windows系统维护实践,梳理一套适用于工业软件启动故障的通用诊断方法,并自然聚焦到三菱GX Works2常见启动失败问题的实际处理,帮助工程师快速定位并解决环境性故障,保障
JacksonUtils工具类
json
CCF CSP历年题解(python)
菜鸡一枚,没参加过算法竞赛,单纯为了抵研究生考试复试才刷题,通过写博客记录下来,希望能和大家互相交流,代码质量不高,大家见谅。 因为考研等原因,题目不定期更新… 第一题 201312-1出现最多次数的数 ...
【java】JacksonUtils工具类
【代码】【java】JacksonUtils工具类。
AI智能体丨使用Coze生成自媒体短视频分镜生成器(附保姆级教程)
【短视频分镜脚本生成器】是一款由Coze平台开发出来的智能体,可快速解析某音/某书视频或本地文件,自动生成专业分镜脚本。用户只需输入视频链接或上传文件,系统即会分析镜头节奏、叙事逻辑和画面内容,输出包含画面、模板和话术参考的标准化脚本(支持3分钟内视频)。该工具还能生成HTML网页和可下载图片,提供可视化呈现。工作流程包括视频解析、帧提取、AI画面理解、脚本生成和网页制作,大幅提升短视频创作效率。
Win10 系统下VisualStudio2022 配置Open3D-0.18.0(C++)
Win10 系统下VisualStudio2022 配置Open3D-0.18.0
后端代码解析工具类篇(until)JacksonUtils
个人理解类提供了一种简便的方式来处理 JSON 数据的序列化和反序列化,同时提供了异常处理,使得在遇到错误时能够给出清晰的反馈。这样的工具类可以在任何需要处理 JSON 的 Java 应用程序中被重用。: 这个方法接受一个 Java 对象作为参数,并将其序列化为 JSON 格式的字符串。如果序列化过程中发生错误,例如对象包含无法序列化的属性,方法将捕获 JsonProcessingException 异常,打印异常堆栈信息,并返回一个空字符串。
假人有限元模型
假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用
【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.
精雕软件(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
汉书HE8,好用的汇编代码编写工具
汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大
JacksonUtils
Json格式化转换工具类 (日期格式化) 引言 之前在使用 OkHttp 进行Java接口调用的时候, 出现了Json格式日期格式不对应,导致 OkHttp 导致日期格式序列化异常,解决办法就是保证远程接收端Vo类的日期格式要与我们发送端的日期格式一直。用OkHttp自带的 JSONObject 使用的是alibaba.fastjson。 感觉JSONObject.toJSONString() 自带的fastjson不太用,在类上加上以下注解 ,仍然会出现日期统一问题, 于是引入Jackson。 @D
Java项目常用的工具类
使用常见的工具类来完成常见的细节操作: IOUtils IOUtils: Apache Commons IO用来处理输入-输出流 详情介绍: https://blog.youkuaiyun.com/l2580258/article/details/89227761 依赖 <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <vers
mysql常用的工具类_Web常用工具类
人手必备的java工具类,中间件com.google.guavaguava28.1-jreorg.apache.commonscommons-collections44.4org.apache.commonscommons-lang3com.alibabafastjson1.2.62Json工具类ServerResponse - 通用Json响应对象ResponseCode是封装code和desc...
String、Object、List<T> 之间转换的工具类
【代码】String、Object、List 之间转换的工具类。
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
Jackson序列化和反序列化
1、添加maven依赖 可行的依赖 <!-- Jackson序列化和反序列化 --> <dependency> <groupId>com.dianping.dpsf</groupId> <artifactId>dpsf-net</artifactId> <version>2.10.4.1</version> </dependency> 在添加依赖的时候碰到过坑,下
java to xml 框架_Jackson_Java和Json/XML互转的开源框架
[在Java项目中將一个对象转换成一段Json格式的字符串是非常常见的,能够实现这种需求的工具包也比较多,例如Gson、JSON-lib、Jackson等等。本文主要介绍Jackson的使用,Jac记得当时我在优化同事的Oauth能力开放项目的时候,需要把Java对象转化为Json和XML格式。当时是花了一天的时间,尝试了各种开源框架,最终选用了Jackson(官网:http://jackson....
289



被折叠的 条评论
为什么被折叠?



