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

ObjectMapper之处理JSON序列化和反序列化

目录

      • 基本示例
        • Java 对象转 JSON 字符串(序列化)
        • JSON 字符串转 Java 对象(反序列化)
      • 高级特性
        • 忽略未知属性
        • 使用注解自定义序列化

当然可以。让我们通过更详细的例子来探索 ObjectMapper 的使用,包括基本的序列化和反序列化操作,以及一些高级特性。

基本示例

Java 对象转 JSON 字符串(序列化)

假设我们有一个简单的Java类 Person

public class Person {private String name;private int age;// 构造函数、getter和setter省略
}

现在,我们想要将一个 Person 对象转换成 JSON 字符串:

import com.fasterxml.jackson.databind.ObjectMapper;public class Main {public static void main(String[] args) throws Exception {Person person = new Person();person.setName("张三");person.setAge(30);ObjectMapper objectMapper = new ObjectMapper();String jsonString = objectMapper.writeValueAsString(person);System.out.println(jsonString);  // 输出:{"name":"张三","age":30}}
}
JSON 字符串转 Java 对象(反序列化)

接下来,我们将一个 JSON 字符串转换回 Person 对象:

String json = "{\"name\":\"张三\", \"age\":30}";Person person = objectMapper.readValue(json, Person.class);
System.out.println(person.getName() + ", " + person.getAge()); // 输出:张三, 30

高级特性

忽略未知属性

假设 JSON 字符串中包含了 Person 类中不存在的属性:

{"name":"李四", "age":25, "email":"lisi@example.com"}

默认情况下,尝试将这个字符串反序列化为 Person 对象时会抛出异常,因为 Person 类中没有 email 属性。我们可以通过配置 ObjectMapper 来忽略未知属性:

objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);Person person = objectMapper.readValue(json, Person.class);

这样,即使 JSON 中包含未知属性,反序列化操作也可以正常进行。

使用注解自定义序列化

你可以使用 Jackson 提供的注解来自定义序列化和反序列化的行为。例如,使用 @JsonProperty 注解来定义 JSON 属性名:

public class Person {@JsonProperty("full_name")private String name;private int age;// 构造函数、getter和setter省略
}

现在,序列化 Person 对象时,JSON 字符串中的属性名将是 full_name 而不是 name

Person person = new Person();
person.setName("王五");
person.setAge(40);String jsonString = objectMapper.writeValueAsString(person);
System.out.println(jsonString);  // 输出:{"full_name":"王五","age":40}

这些例子展示了 ObjectMapper 在处理 JSON 数据时的灵活性和强大功能。通过学习和利用这些特性,你可以更有效地在 Java 应用程序中使用 JSON 数据。

相关文章:

ObjectMapper之处理JSON序列化和反序列化

目录 基本示例Java 对象转 JSON 字符串(序列化)JSON 字符串转 Java 对象(反序列化) 高级特性忽略未知属性使用注解自定义序列化 当然可以。让我们通过更详细的例子来探索 ObjectMapper 的使用,包括基本的序列化和反序…...

Sklearn、TensorFlow 与 Keras 机器学习实用指南第三版(八)

原文:Hands-On Machine Learning with Scikit-Learn, Keras, and TensorFlow 译者:飞龙 协议:CC BY-NC-SA 4.0 第十八章:强化学习 强化学习(RL)是当今最激动人心的机器学习领域之一,也是最古老…...

【51单片机】直流电机实验和步进电机实验

目录 直流电机实验直流电机介绍ULN2003 芯片介绍硬件设计软件设计实验现象 步进电机实验步进电机简介步进电机的工作原理步进电机极性区分双极性步进电机驱动原理单极性步进电机驱动原理细分驱动原理 28BYJ-48 步进电机简介软件设计 橙色 直流电机实验 在未学习 PWM 之前&…...

django+flask网上购物商城系统的设计与实现python-vue

全球经济在快速的发展,中国更是进步飞速,这使得国内的互联网技术进入了发展的高峰时期,这让中外资本不断转向互联网这个大市场[3]。在这个信息高度发达的现在,利用网络进行信息管理改革已经成为了人们追捧的一种趋势。“网上购物系…...

公共用例库计划--个人版(六)典型Bug页面设计与开发

1、任务概述 本次计划的核心任务是开发一个,个人版的公共用例库,旨在将各系统和各类测试场景下的通用、基础以及关键功能的测试用例进行系统性地归纳整理,并以提高用例的复用率为目标,力求最大限度地减少重复劳动,提升…...

impala与kudu进行集成

文章目录 概要Kudu与Impala整合配置Impala内部表Impala外部表Impala sql操作kuduImpala jdbc操作表如果使用了Hadoop 使用了Kerberos认证,可使用如下方式进行连接。 概要 Impala是一个开源的高效率的SQL查询引擎,用于查询存储在Hadoop分布式文件系统&am…...

链表经典算法(+OJ刷题)

文章目录 前言一、移除链表元素二、链表的中间节点三.反转链表四.合并两个有序链表五.分割链表六.环形链表的约瑟夫问题总结 创作不易,点赞收藏一下呗!!! 前言 在上一节,我们介绍了单链表的增,删&#xff…...

网络原理TCP/IP(4)

文章目录 面向字节流粘包问题异常情况TCP小结 面向字节流 创建⼀个TCP的socket,同时在内核中创建⼀个发送缓冲区和⼀个接收缓冲区; • 调⽤write时,数据会先写⼊发送缓冲区中; • 如果发送的字节数太⻓,会被拆分成多个TCP的数据包发出; • 如果发送的字节数太短,就会先在缓…...

【C/C++ 11】贪吃蛇游戏

一、题目 贪吃蛇游戏机制是通过控制蛇上下左右移动并吃到食物得分。 蛇头碰到墙壁或者碰到蛇身就游戏结束。 食物随机生成,蛇吃到食物之后蛇身变长,蛇速加快。 二、算法 1. 初始化游戏地图并打印,地图的边缘是墙,地图的每个坐…...

【日常总结 - java】list 与 字符串(用逗号隔开)相互转换

一、list 转 字符串 第一种:使用谷歌Joiner方法 (推荐) 第二种:循环插入逗号 第三种:stream流 (推荐) 第四种:lambda表达式遍历并加入逗号 二、字符串 转 list 方法一:使用split()方法 方法二:使用C…...

《幻兽帕鲁》好玩吗?幻兽帕鲁能在Mac上运行吗?

最近一款叫做《幻兽帕鲁》的新游戏走红,成为了Steam游戏平台上,连续3周的销量冠军,有不少Mac电脑用户,利用Crossover成功玩上了《幻兽帕鲁》,其实Crossover已经支持很多3A游戏,包括《赛博朋克2077》《博德之…...

【数据分享】1929-2023年全球站点的逐日平均能见度(Shp\Excel\免费获取)

气象数据是在各项研究中都经常使用的数据,气象指标包括气温、风速、降水、湿度等指标,说到常用的降水数据,最详细的降水数据是具体到气象监测站点的降水数据! 有关气象指标的监测站点数据,之前我们分享过1929-2023年全…...

浅谈——开源软件的影响力

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 ✨特色专栏&#xff1a…...

MySQL-事务(TRANSACTION)

文章目录 1. 事务概述2. 事务的四大特性(ACID)3. 控制事务4. 并发事务产生的问题5. 事务的隔离级别6. 拓展6.1 InnoDB如何解决幻读?6.2 MySQL实现事务的原理? 1. 事务概述 定义:数据库的事务( Transaction…...

Vue 实现动态路由

Vue 实现动态路由 Vue中实现动态路由主要涉及到两个方面:一是路由的动态添加,二是基于路由的参数变化来动态渲染组件。这通常在使用Vue Router时进行配置和实现。以下是实现动态路由的一些基本步骤和概念: 安装和设置Vue Router npm insta…...

docker elasticsearch8启动失败

docker elasticsearch8.12.0启动后提示这个,并且始终无法访问localhost:9200 received plaintext http traffic on an https channel, closing connection Netty4HttpChannel 解决方案:重新创建 elasticsearch容器,加上 -e xpack.security.…...

《Python 网络爬虫简易速速上手小册》第1章:Python 网络爬虫基础(2024 最新版)

文章目录 1.1 网络爬虫简介1.1.1 重点基础知识讲解1.1.2 重点案例:社交媒体数据分析1.1.3 拓展案例1:电商网站价格监控1.1.4 拓展案例2:新闻聚合服务 1.2 网络爬虫的工作原理1.2.1 重点基础知识讲解1.2.2 重点案例:股票市场数据采…...

使用 IntelliJ IDEA 配合 Docker 对 Weblogic 中间件进行远程调试

使用idea对jar包远程调试: 打开一个springboot的项目进行远程调试设置: 运行: 其实我不太明白远程调试的意义,本地直接debug不好嘛。。。 点击debug的按钮,打断点测试: 跑到断点处: 远程de…...

ArcGIS学习(三)数据可视化

ArcGIS学习(三)数据可视化 1.矢量数据可视化 需要提前说明的是,在ArcGIS中,所有的可视化选项设置都是在“图层属性”对话框里面的“符号系统”中实现的。 对于矢量数据的可视化,主要有四种可视化方式: 按“要素”可视化按“类别”可视化按“数量”可视化按“图表”可视…...

【使用 Python 进行 NLP】 第 2 部分 NLTK

一、说明 Python 有一些非常强大的 NLP 库,NLTK — 自然语言工具包 — NLTK 是一个强大的开源库,用于 NLP 的研究和开发。它内置了 50 多个文本语料库和词汇资源。它支持文本标记化、词性标记、词干提取、词形还原、命名实体提取、分割、分类、语义推理。…...

CodeHike终极指南:10个提升代码演示质量的专业技巧

CodeHike终极指南:10个提升代码演示质量的专业技巧 【免费下载链接】codehike Build rich content websites with Markdown and React 项目地址: https://gitcode.com/gh_mirrors/co/codehike CodeHike是一个强大的工具,它允许开发者使用Markdown…...

霜儿-汉服-造相Z-Turbo应用指南:打造你的江南庭院古风AI摄影师

霜儿-汉服-造相Z-Turbo应用指南:打造你的江南庭院古风AI摄影师 1. 模型介绍与核心功能 1.1 什么是霜儿-汉服-造相Z-Turbo 霜儿-汉服-造相Z-Turbo是一款专注于生成古风汉服人像的AI文生图模型。它基于强大的Z-Image-Turbo基础模型,通过LoRA&#xff08…...

弦音墨影在影视鉴赏中的创新应用:自然语言解析千里江山图式影像

弦音墨影在影视鉴赏中的创新应用:自然语言解析千里江山图式影像 1. 系统概述与核心价值 「弦音墨影」是一款将尖端人工智能技术与东方美学深度融合的视频理解系统。它基于Qwen2.5-VL多模态大模型,为用户提供了一种全新的视频内容交互体验——通过自然语…...

macOS极简安装法:OpenClaw汉化版对接千问3.5-27B镜像

macOS极简安装法:OpenClaw汉化版对接千问3.5-27B镜像 1. 为什么选择npm汉化版? 去年第一次接触OpenClaw时,我按照官方文档用curl脚本安装,结果在macOS Monterey上卡在了Python依赖报错环节。后来发现是系统自带的Python 2.7与新…...

数据库设计利器:Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF智能生成SQL与优化建议

数据库设计利器:Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF智能生成SQL与优化建议 1. 专业级SQL生成能力展示 在数据库开发领域,编写高效准确的SQL语句是每个开发者和DBA的基本功。Qwen3.5-4B-Claude-4.6-Opus-Reasoning-Distilled-GGUF模型…...

OpenClaw性能测试:Qwen3.5-9B在不同硬件下的响应速度对比

OpenClaw性能测试:Qwen3.5-9B在不同硬件下的响应速度对比 1. 测试背景与动机 上周在部署OpenClaw自动化工作流时,我发现同样的任务在不同设备上执行速度差异巨大。这让我意识到硬件配置对AI智能体性能的影响可能被严重低估。于是决定用Qwen3.5-9B这个热…...

3秒破解百度网盘提取码:告别资源获取困扰的智能解决方案

3秒破解百度网盘提取码:告别资源获取困扰的智能解决方案 【免费下载链接】baidupankey 项目地址: https://gitcode.com/gh_mirrors/ba/baidupankey 你是否曾经面对一个急需的学习资料或软件资源,却因为不知道百度网盘提取码而束手无策&#xff1…...

Qwen2-VL-2B-Instruct模型压缩实战:量化与剪枝以降低部署成本

Qwen2-VL-2B-Instruct模型压缩实战:量化与剪枝以降低部署成本 想让一个多模态大模型在普通显卡上跑起来,是不是感觉有点遥不可及?特别是像Qwen2-VL-2B-Instruct这种能看懂图又能聊天的模型,参数规模摆在那里,对显存和…...

从下载到调用:AutoGLM-Phone-9B完整部署与OpenAI接口对接实战

从下载到调用:AutoGLM-Phone-9B完整部署与OpenAI接口对接实战 1. 为什么你需要关注AutoGLM-Phone-9B 想象一下,你正在开发一款手机应用,需要让用户上传一张照片,然后AI不仅能看懂照片内容,还能用语音回答用户的问题&…...

Comsol水力压裂:考虑流固耦合损伤及热流固耦合的裂缝扩展模型

comsol水力压裂,裂缝扩展模型流固耦合损伤和热流固耦合损伤 在这个模型里面考虑了温度场、应力场、压力场和损伤场,采用的是Comsol内置的接口建模 整个模型呈正方形,内部开一个圆孔 在圆孔内壁施加高压低温流体,模型外边界在这个模…...