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

Jackson序列化Bean额外属性附加--@JsonAnyGetter、@JsonUnwrapped用户

1. 场景

有一项工作,需要将数据从一个服务S中读取出来(得到的是一个JSON),将数据解析转换以后构造成一个数组的类型A的对象,写入到一个服务T中。

  • A.class
@Data
public class A
{String f0 ;String f1 ;
}

在发现需要增加一种类型A的字类型B,这个类型属性非常多(将近一百),在这种情形下,如果直接定义出类型B来,定义那么多属性,还得设置,将会有更大的工作量,所以考虑是不是这些额外的信息可以用一个Map来存储。变成如下结构:

  • A.class
@Data
public class A
{String f0 ;String f1 ;Map<String , Object> otherPropMap ;
}

输出的JSON:

{"f0":"" ,"f1":"" ,"op1":"" ,"op2":"" ,
}

2. 做法

@Data
public class A
{String f0 ;String f1 ;Map<String , Object> otherPropMap ;@JsonAnyGetterpublic Map<String , String> getOtherPropMap(){return otherPropMap ;}
}

在jackson-annotations-2.11时,@JsonAnyGetter注解只能用在Method上,在2.13版本中,已经可以直接使用在属性上了。

3. JsonUnwrapped用法

@JsonUnwrapped注解,只对Bean其作用,Map是不能起作用的。例如下面是可以的。

@Data
public class A
{String f0 ;@JsonUnwrappedB f1 ;
}// B.java
public class B
{String f3 ;String f4 ;
}

那么输出结果是:

{"f0":"" ,"f3":"" ,"f4":""
}

相关文章:

Jackson序列化Bean额外属性附加--@JsonAnyGetter、@JsonUnwrapped用户

1. 场景 有一项工作&#xff0c;需要将数据从一个服务S中读取出来&#xff08;得到的是一个JSON&#xff09;&#xff0c;将数据解析转换以后构造成一个数组的类型A的对象&#xff0c;写入到一个服务T中。 A.class Data public class A {String f0 ;String f1 ; }在发现需要…...

排序算法——冒泡排序算法详解

冒泡排序算法详解 1.引言2.算法概览2.1输入处理2.2核心算法步骤2.3数据结构2.4复杂度分析 3.算法优化4.边界条件和异常处理5.实验和测试6.应用和扩展7.代码示例8.总结 1.引言 冒泡排序是一种简单而直观的比较排序算法&#xff0c;它通过多次遍历数组&#xff0c;比较相邻元素并…...

宋仕强论道之华强北的缺货潮(十六)

始于2019年缺货潮让华强北又生产一大批亿万富翁&#xff0c;缺货的原因主要是&#xff1a;首先&#xff0c;疫情封控导致大量白领在家远程办公&#xff0c;需要购买电脑、打印机等办公设备&#xff0c;同时孩子们也要在家上网课&#xff0c;进一步增加对电子智能终端产品的需求…...

登录注册页面

前提&#xff1a;基于element-ui环境 模态登录组件 分析Login.vue <template><div class"login"><span click"handleClose">X</span></div> </template><script> export default {name: "Login",m…...

视频美颜SDK详解:动态贴纸技术的前沿探索

当下&#xff0c;美颜SDK的动态贴纸技术作为视频美颜的独特亮点&#xff0c;吸引了越来越多开发者和用户的关注。 一、技术详解 动态贴纸技术是视频美颜SDK中的一项创新性功能&#xff0c;它通过在实时视频中添加各种动态效果&#xff0c;为用户提供更加生动有趣的拍摄体验。…...

vue3 实现上传图片裁剪

在线的例子以及代码&#xff0c;请点击访问链接...

flink1.18 广播流 The Broadcast State Pattern 官方案例scala版本

对应官网 https://nightlies.apache.org/flink/flink-docs-master/docs/dev/datastream/fault-tolerance/broadcast_state/ 测试数据 * 广播流 官方案例 scala版本* 广播状态* https://nightlies.apache.org/flink/flink-docs-master/docs/dev/datastream/fault-tolerance…...

vueRouter中scrollBehavior实现滚动固定位置

使用前端路由&#xff0c;当切换到新路由时&#xff0c;想要页面滚到顶部&#xff0c;或者是保持原先的滚动位置&#xff0c;就像重新加载页面那样。 vue-router 能做到&#xff0c;而且更好&#xff0c;它让你可以自定义路由切换时页面如何滚动。 注意: 这个功能只在 HTML5 h…...

解决WinForms跨线程操作控件的问题

解决WinForms跨线程操作控件的问题 介绍 在构建Windows窗体应用程序时&#xff0c;我们通常会遇到需要从非UI线程更新UI元素的场景。由于WinForms控件并不是线程安全的&#xff0c;直接这样做会抛出一个异常&#xff1a;“控件’control name’是从其他线程创建的&#xff0c;…...

从零开始:Git 上传与使用指南

Git 是一种非常强大的版本控制系统&#xff0c;它可以帮助您在多人协作开发项目中更好地管理代码版本&#xff0c;并确保每个团队成员都能及时地获取最新的代码更改。在使用 Git 进行版本控制之前&#xff0c;您需要先进行一些设置&#xff0c;以确保您的代码能够顺利地与远程仓…...

Docker compose部署Golang服务

Docker Compose 部署 在使用docker部署时&#xff0c;除了使用--link的方式来关联容器之外&#xff0c;还可以使用 docker compose 运行多个容器。 本文以项目&#xff1a;https://github.com/johncxf/go-api 为例。 定义 Dockerfile 我这里用于区分默认 Dockerfile 文件&a…...

Day36 435无重叠区间 763划分字母区间

435 无重叠区间 给定一个区间的集合&#xff0c;找到需要移除区间的最小数量&#xff0c;使剩余区间互不重叠。 注意: 可以认为区间的终点总是大于它的起点。 区间 [1,2] 和 [2,3] 的边界相互“接触”&#xff0c;但没有相互重叠。 本题与上一题类似&#xff1a; 如果按照左…...

【Servlet】如何编写第一个Servlet程序

个人主页&#xff1a;兜里有颗棉花糖 欢迎 点赞&#x1f44d; 收藏✨ 留言✉ 加关注&#x1f493;本文由 兜里有颗棉花糖 原创 收录于专栏【Servlet】 本专栏旨在分享学习Servlet的一点学习心得&#xff0c;欢迎大家在评论区交流讨论&#x1f48c; Servlet是Java编写的服务器端…...

读懂比特币—bitcoin代码分析(五)

今天的代码分析主要是 bitcoin/src/init.cpp 文件中的三个函数&#xff1a;AppInitSanityChecks、AppInitLockDataDirectory、AppInitInterfaces&#xff0c;下面我们来说明这三个函数是用来干什么的&#xff0c;并逐行解读函数代码&#xff0c;先贴出源代码如下&#xff1a; …...

uniapp使用uQRCode插件生成二维码的简单使用

最近在找移动端绘制二维码的问题 &#xff0c;直接上代码 下载 weapp-qrcode.js(可以通过npm install weapp-qrcode --save 下载,之后把它父子到untils目录下&#xff09; npm install weapp-qrcode --save在组件页面使用 <canvas id"couponQrcode" canvas-id&qu…...

【寒假每日一题·2024】AcWing 4965. 三国游戏(补)

文章目录 一、题目1、原题链接2、题目描述 二、解题报告1、思路分析2、时间复杂度3、代码详解 一、题目 1、原题链接 4965. 三国游戏 2、题目描述 二、解题报告 1、思路分析 思路参考y总&#xff1a;y总讲解视频 &#xff08;1&#xff09;题目中的获胜情况分为三种&#xff…...

docker 安装mongodb 数据库

1.拉取mongodb镜像 docker pull mongo2.创建文件夹 mkdir -p /home/mongo/conf/ mkdir -p /home/mongo/data/ mkdir -p /home/mongo/logs/3.新增mongod.conf文件 cd /home/mongo/conf && vi mongod.confmongod.conf文件内容&#xff1a; # 数据库文件存储位置 dbpa…...

整数反转算法(leetcode第7题)

题目描述&#xff1a; 给你一个 32 位的有符号整数 x &#xff0c;返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] &#xff0c;就返回 0。假设环境不允许存储 64 位整数&#xff08;有符号或无符号&#xff09;。示例 1…...

微信小程序(十)表单组件(入门)

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1.type 属性指定表单类型 2.placeholder 属性指定输入框为空时的占位文字 源码&#xff1a; form.wxml <!-- 提前准备好的布局结构代码 --> <view class"register"><view class"…...

xcode 设置 ios苹果图标,为Flutter应用程序配置iOS图标

图标设置 1,根据图片构建各类尺寸的图标2.xcode打开ios文件3.xcode设置图标4.打包提交审核,即可(打包教程可通过我的主页查找) 1,根据图片构建各类尺寸的图标 工具网址:https://icon.wuruihong.com/ 下载之后文件目录如下 拷贝到项目的ios\Runner\Assets.xcassets\AppIcon.ap…...

pubnub代码示例

import time from pubnub.pnconfiguration import PNConfiguration from pubnub.pubnub import PubNub, SubscribeListener from pubnub.exceptions import PubNubExceptionpublish_key=pub-c-fab-b05a-c355bb3adac5 subscribe_key=sub...

深入解析Android进程与线程间通信机制:原理、实践与优化

引言 在Android开发中,进程与线程间通信(IPC)是构建高性能、高稳定性应用的核心技术。无论是多进程协作(如系统服务、插件化框架)还是多线程并发(如UI线程与后台任务),高效的通信机制直接决定了应用的流畅性与资源利用率。本文将围绕Binder机制、Handler机制、共享内存…...

《CVPR2025-DEIM创新改进项目实战:从原理到部署的深度学习优化全攻略》019、TimeSformer-DEIM与SlowFast-DEIM

CVPR2025-DEIM创新改进项目实战:TimeSformer-DEIM与SlowFast-DEIM 一、从一次诡异的显存爆炸说起 去年年底,我在调试一个视频行为识别模型时遇到了一个让人抓狂的问题。模型用的是TimeSformer,输入是32帧224x224的视频片段,batch size设了8,按理说A100 80G应该绰绰有余。…...

Robo 3T:原生跨平台MongoDB管理工具的架构解析与技术实践

Robo 3T&#xff1a;原生跨平台MongoDB管理工具的架构解析与技术实践 【免费下载链接】robomongo Native cross-platform MongoDB management tool 项目地址: https://gitcode.com/gh_mirrors/ro/robomongo Robo 3T作为一款原生跨平台的MongoDB管理工具&#xff0c;为开…...

3步解锁百度文库纯净阅读:告别广告干扰的智能解决方案

3步解锁百度文库纯净阅读&#xff1a;告别广告干扰的智能解决方案 【免费下载链接】baidu-wenku fetch the document for free 项目地址: https://gitcode.com/gh_mirrors/ba/baidu-wenku 你是否曾在百度文库找到宝贵资料却被广告栏、推荐模块和导航菜单包围&#xff0c…...

告别花屏!手把手教你为STM32H743的RGB屏配置LVGL显示驱动(基于CubeIDE)

告别花屏&#xff01;STM32H743的RGB屏LVGL显示驱动全流程实战&#xff08;基于CubeIDE&#xff09; 在嵌入式GUI开发中&#xff0c;LVGL凭借轻量级、高性能和丰富的控件库成为热门选择。但对于STM32H743这类高性能MCU&#xff0c;如何充分发挥硬件潜力并避免常见显示问题&…...

RustRedOps COM组件操作指南:从IActiveScript到IShellDispatch的完整示例

RustRedOps COM组件操作指南&#xff1a;从IActiveScript到IShellDispatch的完整示例 【免费下载链接】RustRedOps RustRedOps is a repository for advanced Red Team techniques focused on Rust 项目地址: https://gitcode.com/gh_mirrors/ru/RustRedOps RustRedOps是…...

ElevenLabs甘肃话语音合成技术解析(西北方言TTS工程化白皮书)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;ElevenLabs甘肃话语音合成技术概览 ElevenLabs 是全球领先的语音合成平台&#xff0c;原生支持英语、西班牙语、法语等数十种主流语言&#xff0c;但**不直接内置甘肃话&#xff08;属中原官话秦陇片&a…...

架构解密:如何通过FastExcel流式处理引擎重塑Java Excel操作效率标准

架构解密&#xff1a;如何通过FastExcel流式处理引擎重塑Java Excel操作效率标准 【免费下载链接】fastexcel Generate and read big Excel files quickly 项目地址: https://gitcode.com/gh_mirrors/fas/fastexcel 在当今数据驱动的企业环境中&#xff0c;Excel文件处理…...

AI音乐操作手册:从输入提示词到导出发布全流程

现在 AI 写歌工具已经不只是生成一段背景音乐&#xff0c;很多工具都可以从文字描述直接生成带人声的完整歌曲。真正影响体验的不是工具名字有多热&#xff0c;而是它适不适合当前场景&#xff1a;中文歌词、短视频配乐、个人纪念歌、细分曲风或者二次编辑&#xff0c;判断标准…...