JAVA--JSON转换工具类

JSON转换工具类

在这里插入图片描述

import com.alibaba.fastjson.JSONObject;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import jakarta.validation.constraints.NotNull;
import org.jetbrains.annotations.Nullable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;import java.util.Arrays;
import java.util.Collections;
import java.util.Date;
import java.util.List;public class Json {private static final Logger logger = LoggerFactory.getLogger(Json.class);private static final ObjectMapper OBJECT_MAPPER = new ObjectMapper();static {// 如果为空则不输出OBJECT_MAPPER.setSerializationInclusion(JsonInclude.Include.NON_EMPTY);// 对于空的对象转json的时候不抛出错误OBJECT_MAPPER.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);// 禁用序列化日期为timestampsOBJECT_MAPPER.disable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);// 禁用遇到未知属性抛出异常OBJECT_MAPPER.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);}/*** 对象转json** @param object 对象* @return json*/public static String toJsonString(Object object) {try {return OBJECT_MAPPER.writeValueAsString(object);} catch (JsonProcessingException e) {logger.error("toJsonString() error: {}", e.getMessage());}return "";}/*** json转换换成对象** @param json  json* @param clazz clazz* @return Class*/public static <T> T parseObject(String json, Class<T> clazz) {if (json == null) {return null;}T result = null;try {result = OBJECT_MAPPER.readValue(json, clazz);} catch (Exception e) {logger.error("parseObject() error: {}", e.getMessage());}return result;}/*** json转换换成对象** @param src   src* @param clazz clazz* @return Class*/public static <T> T parseObject(byte[] src, Class<T> clazz) {T result = null;try {result = OBJECT_MAPPER.readValue(src, clazz);} catch (Exception e) {logger.error("parseObject() error: {}", e.getMessage());}return result;}@NotNull@SuppressWarnings("unused")public static ObjectMapper getObjectMapper() {return OBJECT_MAPPER;}/*** ** <a href="https://stackoverflow.com/questions/6349421/how-to-use-jackson-to-deserialise-an-array-of-objects">...</a>* * List<MyClass> myObjects = Arrays.asList(mapper.readValue(json, MyClass[].class))* * works up to 10 time faster than TypeReference.** @return List数组*/@SuppressWarnings("unused")public static <T> List<T> parseArray(String json, Class<T[]> clazz) {if (json == null) {return null;}T[] result = getTs(json, clazz);if (result == null) {return Collections.emptyList();}return Arrays.asList(result);}@Nullableprivate static <T> T[] getTs(String json, Class<T[]> clazz) {T[] result = null;try {result = OBJECT_MAPPER.readValue(json, clazz);} catch (Exception e) {logger.error("parseArray() error: {}", e.getMessage());}return result;}@SuppressWarnings("unused")public static <T> List<T> parseArray(byte[] src, Class<T[]> clazz) {T[] result = null;try {result = OBJECT_MAPPER.readValue(src, clazz);} catch (Exception e) {logger.error("parseArray() error: {}", e.getMessage());}if (result == null) {return Collections.emptyList();}return Arrays.asList(result);}/*** 转换成json节点,即map** @param jsonStr jsonStr* @return JsonNode*/@SuppressWarnings("unused")public static JsonNode parseJson(String jsonStr) {if (jsonStr == null) {return null;}JsonNode jsonNode = null;try {jsonNode = OBJECT_MAPPER.readTree(jsonStr);} catch (Exception e) {logger.error("parseJson() error: {}", e.getMessage());}return jsonNode;}@SuppressWarnings("unused")public static String[] PRODUCT_TIME_COLUMN = new String[]{"createTime", "updateTime", "checkTime"};@SuppressWarnings("unused")public static String[] ORDER_TIME_COLUMN = new String[]{"createTime", "updateTime", "payTime", "deliveryTime", "finallyTime", "shopCartTime", "cancelTime", "inquiryCheckTime"};@SuppressWarnings("unused")public static String[] SHARE_TIME_COLUMN = new String[]{"createTime", "updateTime", "payTime", "orderCompleteTime", "confirmTime", "applyTime", "submitTime", "callBackTime"};@SuppressWarnings("unused")public static JSONObject formatterDateToLong(@NotNull JSONObject json, String... keys) {if (keys != null) {for (String key : keys) {if (json.containsKey(key) && json.getDate(key) != null) {json.put(key, json.getDate(key).getTime());}}}return json;}@SuppressWarnings("unused")public static JSONObject formatterLongToDate(@NotNull JSONObject json, String... keys) {if (keys != null) {for (String key : keys) {if (json.containsKey(key) && json.getLong(key) != null) {json.put(key, new Date(json.getLong(key)));}}}return json;}@SuppressWarnings("unused")public static JSONObject formatterLongToLocalDateTime(JSONObject json, String... keys) {if (keys != null) {for (String key : keys) {if (json.containsKey(key) && json.getLong(key) != null) {json.put(key, TimeUtil.timestamp2LocalDateTime(json.getLong(key)));}}}return json;}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1472780.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

C++:特殊类的设计(无线程)

目录 一、设计一个不能拷贝类 二、设计一个只能在堆上创建对象的类 方法一&#xff1a;析构函数私有化 方法二&#xff1a;构造函数私有化 三、设计一个只能在栈上创建对象的类 四、设计一个类不能被继承 五、设计一个只能创建一个对象的类&#xff08;单例模式&#xf…

【MySQL】mysql访问

mysql访问 1.引入MySQL 客户端库2.C/C 进行增删改3.查询的处理细节4.图形化界面访问数据库4.1下载MYSQL Workbench4.2MYSQL Workbench远程连接数据库 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496; 你的支持是对我最大的鼓励&a…

通过端口和进程pid查找启动文件/脚本

今天审计一个程序又让GPT给我上了一课&#xff0c;记一下笔记&#xff1a; 1、首先该程序开启了8080端口&#xff0c;使用如下命令得到pid为1817 netstat -tunlp|grep 80802、使用pid得到父进程 pstree -ps 1817输出结果如下&#xff1a; 3、看出程序是由systemd启动的&…

[单master节点k8s部署]19.监控系统构建(四)kube-state-metrics

kube-state-metrics 是一个Kubernetes的附加组件&#xff0c;它通过监听 Kubernetes API 服务器来收集和生成关于 Kubernetes 对象&#xff08;如部署、节点和Pod等&#xff09;的状态的指标。这些指标可供 Prometheus 进行抓取和存储&#xff0c;从而使你能够监控和分析Kubern…

钡铼RTU无线S270用于风力发电站机房远程状态监测和故障预警系统集成

在现代风力发电行业中&#xff0c;机房的远程监测和故障预警系统对于保障风力发电机组的稳定运行至关重要。钡铼第4代S270工业级4G远程遥测终端&#xff08;RTU&#xff09;&#xff0c;以其先进的技术和多功能应用&#xff0c;成为风力发电站机房智能化管理的理想选择。 技术…

【MySQL备份】Percona XtraBackup总结篇

目录 1.前言 2.问题总结 2.1.为什么在恢复备份前需要准备备份 2.1.1. 保证数据一致性 2.1.2. 完成崩溃恢复过程 2.1.3. 解决非锁定备份的特殊需求 2.1.4. 支持增量和差异备份 2.1.5. 优化恢复性能 2.2.Percona XtraBackup的工作原理 3.注意事项 1.前言 在历经了详尽…

uni-app组件 子组件onLoad、onReady事件无效

文章目录 导文解决方法 导文 突然发现在项目中&#xff0c;组件 子组件的onLoad、onReady事件无效 打印也出不来值 怎么处理呢&#xff1f; 解决方法 mounted() {console.log(onLoad, this.dateList);//有效// this.checkinDetails()},onReady() {console.log(onReady, this.da…

百度云智能媒体内容分析一体机(MCA)建设

导读 &#xff1a;本文主要介绍了百度智能云MCA产品的概念和应用。 媒体信息海量且复杂&#xff0c;采用人工的方式对视频进行分析处理&#xff0c;面临着效率低、成本高的困难。于是&#xff0c;MCA应运而生。它基于百度自研的视觉AI、ASR、NLP技术&#xff0c;为用户提供音视…

【C++】哈希表 ---开散列版本的实现

你很自由 充满了无限可能 这是很棒的事 我衷心祈祷你可以相信自己 无悔地燃烧自己的人生 -- 东野圭吾 《解忧杂货店》 开散列版本的实现 1 前言2 开散列版本的实现2.1 节点设计2.2 框架搭建2.3 插入函数2.4 删除函数2.5 查找操作2.6 测试 Thanks♪(&#xff65;ω&#x…

申请便宜SSL证书 Let‘s Encrypt泛域名SSL证书

在当今数字化时代&#xff0c;网络安全已成为公众和企业关注的焦点。 申请Lets Encrypt便宜泛域名SSL证书步骤 1. 登录来此加密网站&#xff0c;输入域名&#xff0c;可以勾选泛域名和包含根域。 2. 选择加密方式&#xff0c;一般选择默认就可以了&#xff0c;也可以自定义CS…

【启明智显分享】乐鑫HMI方案2.8寸触摸串口屏应用于太阳能控制器

前言 太阳能作为一种无尽的、可再生的能源&#xff0c;在现代社会的能源结构中占据着日益重要的地位。而在太阳能应用系统中&#xff0c;有一种设备是不可或缺的&#xff0c;那就是太阳能控制器。太阳能控制器在太阳能系统中起着至关重要的作用&#xff0c;它保证系统的安全和…

AntDesign上传组件upload二次封装+全局上传hook使用

文章目录 前言a-upload组件二次封装1. 功能分析2. 代码详细注释3. 使用到的全局上传hook代码4. 使用方式5. 效果展示 总结 前言 在项目中&#xff0c;ant-design是我们常用的UI库之一&#xff0c;今天就来二次封装常用的组件a-upload批量上传组件,让它用起来更方便。 a-uploa…

谷歌地图Google JS API 实现

demo实现 实现源码&#x1f447; // 谷歌地图Google JS API 实现 <template><div class"myMap"><gmp-map :center"center" zoom"15" map-id"ab6b6643adfa1a70"><gmp-advanced-markerv-for"(res, index) in…

python如何不保留小数

1、int() 向下取整&#xff08;内置函数&#xff09; n 3.75 print(int(n)) >>> 3 n 3.25 print(int(n)) >>> 3 2、round() 四舍五入&#xff08;内置函数&#xff09; n 3.75 print(round(n)) >>> 4 n 3.25 print(round(n)) >>> 3 …

Java+前后端分离架构+ MySQL8.0.36产科信息管理系统 产科电子病历系统源码

Java前后端分离架构 MySQL8.0.36产科信息管理系统 产科电子病历系统源码 产科信息管理系统—住院管理 数字化产科住院管理是现代医院管理中的重要组成部分&#xff0c;它利用数字化技术优化住院流程&#xff0c;提升医疗服务质量和效率。以下是对数字化产科住院管理的详细阐述…

NSAT-8000电源模块测试系统提供台式机电源自动化测试方案

在数字化时代&#xff0c;台式机电源的重要性愈发凸显&#xff0c;它不仅是计算机硬件系统的能量心脏&#xff0c;更是保障整个电子生态系统稳定运行的基础。随着人工智能、大数据等技术的飞速发展&#xff0c;计算机系统对电源的性能要求也在不断提高。因此&#xff0c;研究台…

【Linux进程】进程优先级 Linux 2.6内核进程的调度

前言 进程是资源分配的基本单位, 在OS中存在这很多的进程, 那么就必然存在着资源竞争的问题, 操作系统是如何进行资源分配的? 对于多个进程同时运行, 操作系统又是如何调度达到并发呢? 本文将以Linux kernel 2.6为例 , 向大家介绍进程在操作系统中 (OS) 的调度原理; 1. 进程优…

为什么写Python脚本时要加上if __name__ == ‘__main__‘?

目录 一、__name__ 的秘密 二、if __name__ __main__: 的作用 三、代码示例与案例分析 示例一&#xff1a;简单的数学工具模块 示例二&#xff1a;命令行工具 四、实际应用场景 五、进阶应用 1. 插件开发 2. 动态加载模块 3. 交互式与脚本模式切换 六、结论 在Pyth…

阿里云RDS云数据库库表恢复操作

最近数据库中数据被人误删了,记录一下恢复操作方便以后发生时进行恢复. 1.打开控制台&#xff0c;进入云数据库实例. 2.进入实例后 &#xff0c;点击右侧的备份恢复&#xff0c;然后看一下备份时间点&#xff0c;中间这边都是阿里云自动备份的备份集&#xff0c;基本都是7天一备…