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

jackson常用操作

#jackson常用操作

jackson序列化框架,一些常用的操作

依赖

		<!--Jackson包--><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>2.15.2</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-databind</artifactId><version>2.15.2</version></dependency><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId><version>2.15.2</version></dependency>

工具类

import com.fasterxml.jackson.core.JsonFactory;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.*;
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule;import java.io.IOException;
import java.io.StringWriter;
import java.util.List;
import java.util.Map;public class JsonUtils {public static final ObjectMapper OBJECT_MAPPER = createObjectMapper();/*** 初始化ObjectMapper** @return*/private static ObjectMapper createObjectMapper() {ObjectMapper objectMapper = new ObjectMapper();objectMapper.configure(JsonParser.Feature.ALLOW_UNQUOTED_FIELD_NAMES, true);objectMapper.configure(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT, true);objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
//        objectMapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);objectMapper.configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, true);//        objectMapper.registerModule(new Hibernate4Module().enable(Hibernate4Module.Feature.FORCE_LAZY_LOADING));objectMapper.registerModule(new JavaTimeModule());return objectMapper;}public static String object2Json(Object o) {StringWriter sw = new StringWriter();JsonGenerator gen = null;try {gen = new JsonFactory().createGenerator(sw);OBJECT_MAPPER.writeValue(gen, o);} catch (IOException e) {throw new RuntimeException("不能序列化对象为Json", e);} finally {if (null != gen) {try {gen.close();} catch (IOException e) {throw new RuntimeException("不能序列化对象为Json", e);}}}return sw.toString();}public static Map<String, Object> object2Map(Object o) {return OBJECT_MAPPER.convertValue(o, Map.class);}/*** 将 json 字段串转换为 对象.** @param json  字符串* @param clazz 需要转换为的类* @return*/public static <T> T json2Object(String json, Class<T> clazz) {try {return OBJECT_MAPPER.readValue(json, clazz);} catch (IOException e) {throw new RuntimeException("将 Json 转换为对象时异常,数据是:" + json, e);}}/*** 将 json 字段串转换为 List.** @param json* @param clazz* @param <T>* @return* @throws IOException*/public static <T> List<T> json2List(String json, Class<T> clazz) {JavaType type = OBJECT_MAPPER.getTypeFactory().constructCollectionType(List.class, clazz);try {return OBJECT_MAPPER.readValue(json, type);} catch (JsonProcessingException e) {throw new RuntimeException("将 Json 转换为List时异常,数据是:" + json, e);}}/*** 将 json 字段串转换为 数据.** @param json* @param clazz* @param <T>* @return* @throws IOException*/public static <T> T[] json2Array(String json, Class<T[]> clazz) {try {return OBJECT_MAPPER.readValue(json, clazz);} catch (JsonProcessingException e) {throw new RuntimeException("将 Json 转换为数组时异常,数据是:" + json, e);}}public static <T> T node2Object(JsonNode jsonNode, Class<T> clazz) {try {T t = OBJECT_MAPPER.treeToValue(jsonNode, clazz);return t;} catch (JsonProcessingException e) {throw new RuntimeException("将 Json 转换为对象时异常,数据是:" + jsonNode.toString(), e);}}public static JsonNode object2Node(Object o) {try {if (o == null) {return OBJECT_MAPPER.createObjectNode();} else {return OBJECT_MAPPER.convertValue(o, JsonNode.class);}} catch (Exception e) {throw new RuntimeException("不能序列化对象为Json", e);}}}

相关文章:

jackson常用操作

#jackson常用操作 jackson序列化框架&#xff0c;一些常用的操作 依赖 <!--Jackson包--><dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-core</artifactId><version>2.15.2</version></de…...

ios ipa包上传需要什么工具

目录 ios ipa包上传需要什么工具 前言 一、IPA包的原理 二、IPA包上传的步骤 1.注册开发者账号 2.apk软件制作工具创建应用程序 3.构建应用程序 4.生成证书和配置文件 5.打包IPA包 6.上传IPA包 三、总结 前言 iOS IPA包是iOS应用程序的安装包&#xff0c;可以通过iT…...

科目1基础知识快速入门精简

科目1-4 科目一&#xff0c;又称科目一理论考试、驾驶员理论考试。》学习道路交通安全法律、法规和相关知识学习 考试内容包括驾车理论基础、道路安全法律法规、地方性法规等相关知识&#xff0c;再加地方性法规。考试形式为上机考试&#xff0c;100道题&#xff0c;90分及以…...

安卓逆向 - 某东app加密参数还原

本文仅供学习交流&#xff0c;只提供关键思路不会给出完整代码&#xff0c;严禁用于非法用途&#xff0c;拒绝转载&#xff0c;若有侵权请联系我删除&#xff01; 目标app&#xff1a;5Lqs5LicYXBwMTEuMy4y 目标接口&#xff1a;aHR0cHM6Ly9hcGkubS5qZC5jb20vY2xpZW50LmFjdGl…...

Visual Studio(2022)生成链接过程的.map映射文件以及.map映射文件的内容说明

微软的官方说明 /MAP&#xff08;生成映射文件&#xff09; | Microsoft Learn 设置步骤 1. 右键项目属性, 连接器 -> 常规 -> 启用增量链接&#xff0c;设置为否。如下图&#xff1a; 2. 连接器 -> 调试 生成调试信息 设置为 生成调试信息 (/DEBUG) 生成程序数据库…...

A. Gift Carpet

time limit per test 1 second memory limit per test 256 megabytes input standard input output standard output Recently, Tema and Vika celebrated Family Day. Their friend Arina gave them a carpet, which can be represented as an n⋅m&#xfffd;⋅&…...

技术科普:汽车开放系统架构AUTOSAR

01.AUTOSAR简介 汽车是现代人类实现“千里江陵一日还”的交通工具&#xff0c;而计算机则是使人脱离繁杂重复脑力劳动的生产技术&#xff0c;两者的结合催生了汽车电子产业的蓬勃发展。 21世纪初&#xff0c;随着汽车电子应用需求的不断增多与硬件资源不断丰富&#xff0c;软…...

说说HTTP 和 HTTPS 有什么区别?

分析&回答 http协议 超文本传输协议&#xff0c;是互联网上应用最多的协议&#xff0c;基于TCP/IP通讯协议来传递信息&#xff0c;用于从WWW服务器传输超文本到本地浏览器的传输协议。 https协议 我们可以将其看作是以安全为目标的http协议。在http协议的基础上增加了S…...

Pygame中Trivia游戏解析6-5

3.4 next_question()函数 next_question()函数的作用是显示下一个题目。当用户按下“确认”按键后&#xff0c;将会显示下一个题目&#xff0c;代码如下所示。 if self.scored or self.failed:self.scored Falseself.failed Falseself.correct 0self.colors [white,white…...

Java8新特性2——方法引用

Java8新特性2——方法引用 注&#xff1a;以下内容基于Java 8&#xff0c;所有代码都已在Java 8环境下测试通过 目录&#xff1a; Java8新特性1——函数式接口&lambda表达式方法引用Stream 1. 方法引用 方法引用提供了一种替代 lambda 表达式的语法&#xff0c;允许以更…...

Mac“其他文件”存放着什么?“其他文件”的清理方法

很多Mac用户在清理磁盘空间时发现&#xff0c;内存占用比例比较大的除了有iCloud云盘、应用程序、影片、音频、照片等项目之外&#xff0c;还有一个“其他文件”的项目磁盘占用比也非常大&#xff0c;想要清理却无从下手。那么Mac“其他文件”里存放的是什么文件&#xff1f;我…...

46、TCP的“三次握手”

在上一节中&#xff0c;TCP首部常用的几个选项&#xff0c;有些选项的参数就是在通信双方在建立TCP连接的时候进行确定和协商的。所以在学习过TCP报文首部之后&#xff0c;下面我们开始学习TCP的连接建立。 TCP的一个特点是提供可靠的传输机制&#xff0c;还有一个特点就是TCP…...

libudev 和 libusb 常见API分析

libudev详解: libudev是Linux系统下的一个库&#xff0c;它提供针对内核提供的udev设备管理服务的函数库。udev是一种内核机制&#xff0c;用于在系统中传递解决方案的有关设备信息&#xff0c;以及在出现设备事件&#xff08;如删除、插入设备&#xff09;时触发相应的操作。 …...

[dasctf]misc04

与他不说一模一样吧也差不多 第三届红明谷杯CTF-【MISC】-阿尼亚_keepb1ue的博客-CSDN客flag.zip需要解压密码&#xff0c;在图片中发现一串密文。一串乱码&#xff0c;尝试进行字符编码爆破。获取到密码&#xff1a;简单的编码。https://blog.csdn.net/qq_36618918/article/d…...

Scala的函数式编程与高阶函数,匿名函数,偏函数,函数的闭包、柯里化,抽象控制,懒加载等

Scala的函数式编程 函数式编程 解决问题时&#xff0c;将问题分解成一个一个的步骤&#xff0c;将每个步骤进行封装&#xff08;函数&#xff09;&#xff0c;通过调用这些封装好的步骤&#xff0c;解决问题。 例如&#xff1a;请求->用户名、密码->连接 JDBC->读取…...

Axure RP 8.1.0.3400(原型设计工具)

Axure RP 8是一款原型设计工具&#xff0c;它提供了丰富的功能和工具&#xff0c;帮助用户创建高质量的网页、移动应用和桌面软件原型。以下是Axure RP 8的一些特色介绍&#xff1a; 强大的交互设计&#xff1a;Axure RP 8支持创建复杂的动画和过渡效果&#xff0c;让你的原型更…...

企业微信、飞书、钉钉机器人消息发送工具类

1、实例化WebClient对象 其实你也可以使用RestTemplate&#xff0c;我这里主要是用到了webflux框架&#xff0c;所以需要实例化客户端请求对象 Bean public WebClient webClient(){HttpClient httpClient getHttpClient();return WebClient.builder().clientConnector(new R…...

手撕 视觉slam14讲 ch7 / pose_estimation_3d2d.cpp (1)

首先理清我们需要实现什么功能&#xff0c;怎么实现&#xff0c;提供一份整体逻辑&#xff1a;包括主函数和功能函数 主函数逻辑&#xff1a; 1. 读图,两张rgb&#xff08;cv::imread&#xff09; 2. 找到两张rgb图中的特征点匹配对 2.1定义所需要的参数&#xff1a;keypoints…...

Mac安装Dart时,Homebrew报错 Error: Failure while executing

前言&#xff1a; 最近准备开发Flutter项目时&#xff0c;在安装环境时&#xff0c;安装Homebew时遇到了以下报错信息&#xff0c;在这里分享一下。 报错信息&#xff1a; ~ % brew tap dart-lang/dart > Tapping dart-lang/dart Cloning into /opt/homebrew/Library/Tap…...

SSM整合~

构建并配置项目&#xff1a; 第一步&#xff1a;创建maven项目 第二步&#xff1a;配置pom.xml文件 设置打包方式&#xff1a; 为了方便部署&#xff0c;我们通常情况下&#xff0c;将项目打包为WAR&#xff0c;因为WAR文件是一种可执行的压缩文件&#xff0c;它可以将项目…...

文件日期更改器:在 Windows 上修改文件日期的完整指南

需要更改文件创建日期或编辑修改时间戳&#xff1f;我们的综合指南揭示了三种有效的文件日期修改方法&#xff0c;其中包括评价最高的文件属性日期修改工具——视频转换器的文件日期修改器。学习专业的文件日期修改技巧&#xff0c;同时确保数据完整性。为什么您可能需要更改文…...

FireRedASR Pro实战教学:如何用pydub解决采样率偏差问题

FireRedASR Pro实战教学&#xff1a;如何用pydub解决采样率偏差问题 1. 问题背景与挑战 语音识别技术在实际应用中常常会遇到一个棘手问题&#xff1a;采样率偏差。当输入音频的采样率与模型训练时的采样率不一致时&#xff0c;会导致识别结果出现"加速"或"变…...

PyTorch Geometric安装避坑指南:从CUDA版本选择到依赖包自动安装的完整流程

PyTorch Geometric工程化安装指南&#xff1a;从版本匹配到环境复现的深度实践 在深度学习领域&#xff0c;图神经网络(GNN)正成为处理非欧几里得数据的利器&#xff0c;而PyTorch Geometric(PyG)作为最受欢迎的GNN框架之一&#xff0c;其安装过程却常让开发者陷入"依赖地…...

RTKLIB 2.4.3 b34 多系统兼容配置与实战调试指南

1. RTKLIB 2.4.3 b34多系统配置入门 第一次接触RTKLIB的朋友可能会被它的多系统支持能力惊艳到。这个开源软件不仅能处理GPS数据&#xff0c;还能同时解算GLONASS、Galileo、北斗等多个卫星系统的观测数据。我去年在做一个农业无人机项目时&#xff0c;就深刻体会到多系统兼容的…...

告别手动重标:基于Python脚本的Labelme数据集增强与JSON同步更新实战

1. 为什么我们需要自动化处理Labelme标注数据 做计算机视觉项目的朋友都知道&#xff0c;数据标注是个体力活。特别是使用Labelme这类工具进行语义分割标注时&#xff0c;每张图片都要手动勾勒物体轮廓&#xff0c;工作量巨大。更让人头疼的是&#xff0c;当我们对原始图片进行…...

从“玩概念”到“真落地”:AI智能体三大场景的突围之路

当行业不再为“大模型参数”狂欢&#xff0c;真正的价值开始浮现——客服自动化、内部知识库、办公Agent&#xff0c;正在成为AI智能体最先跑通商业闭环的三大场景。而决定成败的关键&#xff0c;已经从模型能力转向上下文设计、工具调用与反馈迭代。 2026年&#xff0c;大模型…...

香农信息熵的5个常见误区:你以为的熵可能不是真正的熵

香农信息熵的5个常见误区&#xff1a;你以为的熵可能不是真正的熵 在机器学习与数据科学领域&#xff0c;香农信息熵&#xff08;Shannon Entropy&#xff09;常被视为衡量数据不确定性的黄金标准。但有趣的是&#xff0c;许多从业者在使用这一概念时&#xff0c;往往陷入一些…...

DeOldify处理超分辨率图像实战:应对大尺寸老照片的内存与计算挑战

DeOldify处理超分辨率图像实战&#xff1a;应对大尺寸老照片的内存与计算挑战 老照片修复&#xff0c;听起来是个挺有情怀的事儿。但当你真的拿到一张祖辈传下来的、扫描出来的超大尺寸老照片时&#xff0c;情怀可能瞬间就被现实浇灭了。动辄几千乘几千像素的扫描件&#xff0…...

ncmdump:突破NCM格式限制的音频转换解决方案

ncmdump&#xff1a;突破NCM格式限制的音频转换解决方案 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 问题场景&#xff1a;数字音乐格式的兼容性困境 在流媒体音乐服务普及的今天&#xff0c;网易云音乐采用的NCM加密格式成为了…...

Blender 3MF插件全攻略:提升3D打印工作流效率的关键技术

Blender 3MF插件全攻略&#xff1a;提升3D打印工作流效率的关键技术 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat 3MF格式作为3D打印领域的核心交换标准&#xff0c;正…...