Jackson中ObjectMapper

文章目录

    • 概要
    • ObjectMapper常用方法
      • 将Java对象转换为JSON字符串
      • 从JSON字符串转换为Java对象
      • 读取JSON文件并解析为树结构

概要

ObjectMapper 是 Jackson 数据处理库的核心类,用于将 Java 对象转换为 JSON,以及将 JSON 转换为 Java 对象。

ObjectMapper常用方法

方法作用
writeValue(File, Object)将 Java 对象转换为 JSON,并写入到文件中。
writeValue(OutputStream, Object)将 Java 对象转换为 JSON,并写入到输出流中。
writeValueAsString(Object)将 Java 对象转换为 JSON 字符串。
writeValueAsBytes(Object)将 Java 对象转换为 JSON 字节数组。
readValue(File, Class<T>)从文件中读取 JSON,并将其转换为 Java 对象。
readValue(URL, Class<T>)从 URL 中读取 JSON,并将其转换为 Java 对象。
readValue(String, Class<T>)从字符串中读取 JSON,并将其转换为 Java 对象。
readValue(byte[], Class<T>)从字节数组中读取 JSON,并将其转换为 Java 对象。
treeToValue(TreeNode, Class<T>)将 JSON 树模型转换为 Java 对象。
valueToTree(Object)将 Java 对象转换为 JSON 树模型。
convertValue(Object, Class<T>)将一个类型的对象转换为另一个类型的对象。
readTree(File)从文件中读取 JSON,并解析为树结构(JsonNode 对象)。
readTree(String)从字符串中读取 JSON,并解析为树结构(JsonNode 对象)。
readTree(InputStream)从输入流中读取 JSON,并解析为树结构(JsonNode 对象)。
readTree(byte[])从字节数组中读取 JSON,并解析为树结构(JsonNode 对象)。
createObjectNode()创建一个空的 ObjectNode 对象,用于构建 JSON 对象。
createArrayNode()创建一个空的 ArrayNode 对象,用于构建 JSON 数组。
configure(Feature, boolean)配置 ObjectMapper 的特定功能,例如是否缩进输出的 JSON,是否允许单引号,是否允许注释等。
setSerializationInclusion(JsonInclude.Include)设置序列化时包含属性的规则,例如仅包含非空属性。
registerModule(Module)注册一个自定义模块,以添加新的序列化和反序列化功能。

将Java对象转换为JSON字符串

ObjectMapper objectMapper = new ObjectMapper();
MyClass myObject = new MyClass();
String jsonString = objectMapper.writeValueAsString(myObject);
System.out.println(jsonString);

从JSON字符串转换为Java对象

String jsonString = "{\"name\":\"John\", \"age\":30}";
ObjectMapper objectMapper = new ObjectMapper();
MyClass myObject = objectMapper.readValue(jsonString, MyClass.class);
System.out.println(myObject.getName());

读取JSON文件并解析为树结构

File jsonFile = new File("data.json");
ObjectMapper objectMapper = new ObjectMapper();
JsonNode rootNode = objectMapper.readTree(jsonFile);
System.out.println(rootNode.path("name").asText());

❤觉得有用的可以留个关注❤

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

matplotlib颜色对照表

matplotlib的色彩设置: #------------------------------------------------------------------------------------------------------------------------------- #-------------------------------------------------------------------------------------------------------…

【JavaWeb】登录校验-会话技术(二)JWT令牌

JWT令牌 介绍 JWT全称&#xff1a;JSON Web Token &#xff08;官网&#xff1a;https://jwt.io/&#xff09; 定义了一种简洁的、自包含的格式&#xff0c;用于在通信双方以json数据格式安全的传输信息。由于数字签名的存在&#xff0c;这些信息是可靠的。 简洁&#xff1a…

vue和react你怎么选择?

在选择Vue和React之间&#xff0c;其实没有一个绝对的“最佳选择”&#xff0c;因为这取决于你的项目需求、团队熟悉度、开发环境、以及你对这两个框架的个人偏好。下面是一些可以帮助你做出决策的因素&#xff1a; 1. 学习曲线 Vue&#xff1a;Vue的学习曲线相对平缓&#xf…

Android Camera API发展历程

Android Camera API发展历程 一、Android Camera API介绍 Android系统中Camera API是用于控制相机设备的主要API&#xff0c;到目前为止&#xff0c;Camera API历史上共历经了三版重要的API。 在Android 5.0之前&#xff0c;主要使用的是Camera API1&#xff0c;但现在已经弃…

如何使用 Puppeteer 避免机器人检测?

为什么有反机器人系统&#xff1f; 保护网站资源和性能 爬虫和机器人程序在短时间内可以发送大量请求&#xff0c;消耗服务器资源&#xff0c;导致网站性能下降甚至崩溃。 反机器人系统可以帮助网站管理和限制这些请求&#xff0c;从而保持网站的稳定性和可用性。 防止数据…

借助软件资产管理系统,优化Solidworks软件许可证管理

在当今数字化的企业环境中&#xff0c;软件许可证的有效管理对于业务的顺畅运行至关重要。然而&#xff0c;IT 运维部门常常面临着诸如用户部门 SW 许可证不够用、使用紧张等问题&#xff0c;而由于缺乏可靠的数据支持&#xff0c;难以准确判断许可证的短缺程度&#xff0c;这给…

MFC引用C#生成的dll,将dll放置到非exe程序目录,如何操作?

&#x1f3c6;本文收录于「Bug调优」专栏&#xff0c;主要记录项目实战过程中的Bug之前因后果及提供真实有效的解决方案&#xff0c;希望能够助你一臂之力&#xff0c;帮你早日登顶实现财富自由&#x1f680;&#xff1b;同时&#xff0c;欢迎大家关注&&收藏&&…

信创:鲲鹏(arm64)+麒麟(kylin v10)离线部署k8s和kubesphere(含离线部署新方式)

本文将详细介绍&#xff0c;如何基于鲲鹏CPU(arm64)和操作系统 Kylin V10 SP2/SP3&#xff0c;利用 KubeKey 制作 KubeSphere 和 Kubernetes 离线安装包&#xff0c;并实战部署 KubeSphere 3.3.1 和 Kubernetes 1.22.12 集群。 服务器配置 主机名IPCPUOS用途master-1192.168.10…

【linux高级IO(二)】多路转接之select详解

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:Linux从入门到精通⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学更多操作系统知识   &#x1f51d;&#x1f51d; Linux高级IO 1. 前言2. 初识s…

TEE共享内存的介绍-共享内存的限制是什么? TA堆内存/栈内存有限制吗?Trustzone/TEE

快速链接: . 👉👉👉 个人博客笔记导读目录(全部) 👈👈👈 付费专栏-付费课程 【购买须知】:【精选】TEE从入门到精通-[目录] 👈👈👈思考: 如何开发一个TA? sdk又是什么?开发一个TA的流程是怎样的?How to do?有关TA的签名介绍TEE开发Secure driver介绍RP…

昇思25天学习打卡营第21天|基于MindSpore实现BERT对话情绪识别

模型简介 BERT全称是来自变换器的双向编码器表征量。与BERT模型相似的预训练语言模型例如问答、命名实体识别、自然语言推理、文本分类等在许多自然语言处理任务中发挥着重要作用。模型是基于Transformer中的Encoder并加上双向的结构。 BERT模型的主要创新点都在pre-train方法…

SCI丨返修一作+通讯

中科四区&#xff0c;JCR2 返修转让一作通讯&#xff0c;5个月左右录用 题目&#xff1a;通过机器学习算法XXXXXXXxxx混凝土力学性能的可靠方法

Nginx 配置ssl证书

1. 准备 SSL 证书文件 确保您有以下文件&#xff1a; SSL 证书文件&#xff08;通常是 .crt 或 .pem 文件&#xff09; 私钥文件&#xff08;通常是 .key 文件&#xff09; 中间证书文件&#xff08;如果适用&#xff0c;通常是 .crt 或 .pem 文件&#xff09; 将这些文件上传…

苍穹外卖--完善登录功能:进行MD5加密

目标 TODO&#xff1a;使用MD5加密方式对明文密码。 实现 password DigestUtils.md5DigestAsHex(password.getBytes());

Face_recognition实现人脸识别

这里写自定义目录标题 欢迎使用Markdown编辑器一、安装人脸识别库face_recognition1.1 安装cmake1.2 安装dlib库1.3 安装face_recognition 二、3个常用的人脸识别案例2.1 识别并绘制人脸框2.2 提取并绘制人脸关键点2.3 人脸匹配及标注 欢迎使用Markdown编辑器 本文基于face_re…

双向链表+Map实现LRU

LRU: LRU是Least Recently Used的缩写&#xff0c;即最近最少使用&#xff0c;是一种常用的页面置换算法&#xff0c;选择最近最久未使用的页面予以淘汰。 核心思想&#xff1a; 基于Map实现k-v存储&#xff0c;双向链表中使用一个虚拟头部和虚拟尾部&#xff0c;虚拟头部的…

BioXcell—InVivoMAb anti-West Nile/dengue virus E protein

研发背景&#xff1a; 西尼罗河病毒(WNV)是一种由蚊虫类介导传播的黄病毒&#xff0c;与引起人类感染性流行病的登革热病毒、黄热病病毒和日本脑炎病毒密切相关。 WNV和登革热病毒(DENV)同属黄病毒科&#xff08;Flaviviridae&#xff09;黄热病毒属&#xff0c;是具有小包膜单…

实现llava的【单轮对话】调整成【多轮对话】 (输入图片/多模态/多轮对话/llava)

使用llava时&#xff0c;将llava的单轮对话调整成多轮对话 先说好方法一&#xff0c;直接对官方网站的quick start代码进行修改方法二&#xff1a;使用bash结合基础的单轮对话代码进行修改2.1 首先是最基础的llava官网代码回顾2.2 伪多轮对话方法&#xff08;每次新的prompt输入…

AEC10 SA计算整理 --- 基础SA

LuxSA: LuxSALumaAvgLumaBE16x16 LuxSATarget[setparam/tr:luxlux] LuxSAAdjRatioLuxSATarget/LuxSALumaLuxSALuma: 计算16x16区域的平均亮度&#xff08;Luma值&#xff09;。 LuxSATarget: 通过参数设置获取目标亮度值&#xff08;通常与当前光线条件相关&#xff09;。 Lux…

【多模态】41、VILA | 打破常规多模态模型训练策略,在预训练阶段就微调 LLM 被证明能取得更好的效果!

论文&#xff1a;VILA: On Pre-training for Visual Language Models 代码&#xff1a;https://github.com/NVlabs/VILA 出处&#xff1a;NVLabs 时间&#xff1a;2024.05 贡献&#xff1a; 证明在预训练阶段对 LLM 进行微调能够提升模型对上下文任务的效果在 SFT 阶段混合…