java中对象字段转换

news2024/12/23 9:07:16

文章目录

  • 前言
  • 一、对象属性转换问题
  • 二、如何处理转换?
  • 三 、处理办法
    • 1 利用 @JsonProperty 改变转出属性
    • 2 利用 @JsonAlias 增加接收的属性
  • 总结


前言

在java中,有时候会涉及到一些对象的转换,为什么转换呢?

  • 由于接受参数和用的时候对应不上
  • 由于经历过一些修改,为了兼容

一、对象属性转换问题

例如 接收的字段名称为 name
使用的时候,或者对应另一个对象字段值为 xingming

二、如何处理转换?

  • 利用阿里巴巴的 fastjson2
  • 以及jackjson 的注解搞定

三 、处理办法

1 利用 @JsonProperty 改变转出属性

public class CoverTest {

    public static void main(String[] args) throws InterruptedException {

        A a = new A();
        a.setName("小明");
        a.setAddress("黑龙江");
        a.setAge(22);
        B t = JSON.parseObject(JSON.toJSONString(a), B.class);
        System.out.println(JSON.toJSON(t));
    }

    @Data
    static class A {
        @JsonProperty("xingming")
        private String name;
        @JsonProperty("nianling")
        private Integer age;
        @JsonProperty("dizhi")
        private String address;
    }

    @Data
    static class B {
        private String xingming;
        private Integer nianling;
        private String dizhi;
    }
 }

执行如下
转换结果

2 利用 @JsonAlias 增加接收的属性

public class CoverTest {

    public static void main(String[] args) throws InterruptedException {
        C c = new C();
        c.setName("小明");
        c.setAddress("黑龙江");
        c.setAge(22);
        D d = JSON.parseObject(JSON.toJSONString(c), D.class);
        System.out.println(JSON.toJSON(d));
    }

    @Data
    static class C {
        private String name;
        private Integer age;
        private String address;
    }

    @Data
    static class D {
        @JsonAlias("name")
        private String xingming;
        @JsonAlias("age")
        private Integer nianling;
        @JsonAlias("address")
        private String dizhi;
    }
}

运行结果如下
C>>D


总结

可以利用 @JsonProperty 改变转成json 时候的属性值(key值)
可以利用 @JsonAlias 增加转为对象时候接受的属性值(key值),并且原有的属性值也可以用
还可以用 @JsonProperty 和 @JsonAlias 同时使用,同时增加接收参数和转出参数的值

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

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

相关文章

mac上 如何批量在文件名后加相同的文字?

mac上如何批量在文件名后加相同的文字?不管你是使用windows电脑还是使用mac电脑,很多小伙伴都会在电脑上进行文件批量重命名的操作,不过这项操作对于使用windows系统电脑的小伙伴来说会简单一些,因为在网上可以搜索到很多这样的教…

Python基础:错误与异常

文章目录 错误和异常程序错误异常处理断言处理程序调试 错误和异常 程序错误 程序的错误 ​ python程序中错误通常分为3种类型,即语法错误、运行错误和逻辑错误。 语法错误:源代码中的拼写语法错误,这些错误导致Python编译器无法把Python…

处理 git仓库提交大小写不识别的问题

源码 echo off title Handle name capitalization git config core.ignorecase false echo.&pause新建一个文本改名 处理资源大小写不识别问题.bat 以文编编辑器打开赋值粘贴上面的代码 丢到你的git仓库根目录 双击运行就可以了

知行之桥EDI系统QA第三期:启动知行之桥专题

随着使用知行之桥EDI系统的用户群体日益壮大,在使用过程中,用户可能对系统的工作原理、功能模块和实施过程有一些疑问。近期整理了有关启动知行之桥EDI系统时,常见的几个问题: 一、启动知行之桥服务报错:Failed to st…

王海峰最新发声!

7月6日,2023世界人工智能大会(WAIC)在上海世博中心开幕,众多专家学者、科技领军人才、企业代表共同探讨人工智能赋能产业发展的全新变化,展望技术新趋势。百度首席技术官、深度学习技术及应用国家工程研究中心主任王海…

无法应付大文件、海量文件可靠传输的FTP,用什么替代?

FTP作为世界第一款文件传输协议,在很长时间内,都广泛在世界范围内应用于各个行业和领域的文件传输,FTP解决了文件传输协议有无的问题,填补了互联网传输协议的空缺,极大程度改善了文件传输的困境。 但随着网络技术的发展…

HTTPS 的加密流程详解

HTTPS 采用的是对称加密和非对称加密结合的「混合加密」方式: 在通信建立前采用非对称加密的方式交换「会话秘钥」,后续就不再使用非对称加密。 在通信过程中全部使用对称加密的「会话秘钥」的方式加密明文数据。 采用「混合加密」的方式的原因&#…

TiDB(3):TiDB安装部署

https://pingcap.com/docs-cn/stable/overview/#部署方式 1 部署方式选择 https://gitee.com/pingcap/tidb?_fromgitee_search 通过查阅官方文档和网友踩坑经验,建议自己测试的时候使用官网推荐的Docker Compose方式快速构建TiDB集群即可(或者使用单机版) 2 TiDB-L…

【PHP+VUE】手术麻醉临床信息管理系统源码

一、前言 手术麻醉信息系统将为医院手术室带来规范化的工作管理标准、实时快捷的信息流,医疗经验的积累和有效归纳, 全面解决了手术室麻醉过程管理的信息化和数字化。 能够规范手术室的工作流程,实现麻醉、手术过程中的信息数字化和网络化,…

基于Pytorch深度学习的脑肿瘤分类识别(文末送书)

🤵‍♂️ 个人主页:艾派森的个人主页 ✍🏻作者简介:Python学习者 🐋 希望大家多多支持,我们一起进步!😄 如果文章对你有帮助的话, 欢迎评论 💬点赞&#x1f4…

第十四章 原理篇:DEIT

参考教程: https://arxiv.org/pdf/2012.12877.pdf https://github.com/facebookresearch/deit 文章目录 概述Knowledge DistillationDEITbase model: VITtransformer blockclass tokenposition embedding Distillation through attention 代码实现DistilledVisionTr…

Java Excel 打开文件报发现“xx.xlsx”中的部分内容有问题。是否让我们尽量尝试恢复问题解决

问题描述: 发现“文件.xlsx”中的部分内容有问题。是否让我们尽量尝试恢复? 问题分析: 1、后端的导出接口写的不对,又返回流数据,又返回响应体数据,导致前端将流数据和响应体数据都下载到了excel文件中。…

web开发应用技术论文范文

web开发技术论文篇一:《WEB开发基本技术实验项目设计》 摘 要:在众多企业开展电子商务的背景下,在管理信息系统网络化发展的趋势下,对经管专业学生阿来说了解并掌握web开发的基本技术知识是十分必要的,为此本文以黄梯云…

Nova: 基于committed relaxed R1CS的IVC方案

Nova是INV的一种实现方案,所谓IVC是指Prover可以向Verifier证明 z i F ( i ) ( z 0 ) z_i F^{(i)}(z_0) zi​F(i)(z0​) 。 最朴素的做法是直接进行i次迭代,每次迭代都进行一次zkSnark,但这样做有三个问题: Prover所需内存大…

软件安全测试流程与方法分享(中)

安全测试是在IT软件产品的生命周期中,特别是产品开发基本完成到发布阶段,对产品进行检验以验证产品符合安全需求定义和产品质量标准的过程。安全是软件产品的一个重要特性,安全测试也是软件测试重的一个重要类别,本系列文章我们与…

趁规则改变之前,转变思维

在职场和生活中,我们常常强调了解和遵守规则的重要性。无论从事哪个行业、从事何种工作,赚取收入都需要理解并适应游戏规则。然而,规则并非永远不变,它会随着竞争环境、市场条件甚至社会文化的变迁而发生变化。 举个例子&#xff…

LeetCode 打卡day57--动态规划之回文串问题

一个人的朝圣 — LeetCode打卡第57天 知识总结 Leetcode 647. 回文子串题目说明代码说明 Leetcode 5. 最长回文子串题目说明代码说明 Leetcode 516. 最长回文子序列题目说明代码说明 知识总结 今天是动态规划的回文串问题系列 Leetcode 647. 回文子串 题目链接 题目说明 给…

nginx四层转发应用

默认使用yum安装的nginx是没有额外安装的动态模块的,需要自己额外安装 ls /usr/lib64/nginx/modules/ 若是不安装stream模块,直接在nginx的配置文件中调用stream模块,重载配置文件的时候会报错识别不到stream功能 安装stream模块 yum insta…

网际奇缘:计算机网络演进、概念探秘与通信魔法!

文章目录 计算机网络概述1.1🍁🍁计算机网络的基本定义和基本功能1.2 🪶🪶计算机网络的演进过程1.2.1 🦇主机互联🦇1.2.2 🦇局域网🦇1.2.3 🦇互联网🦇1.2.4 &a…

测试编排必要性

目录 前言: 测试编排定义 测试编排和自动化 测试编排的好处 自动化的测试编排策略 自动化/编排工具 测试编排和CI/CD 学点啥 前言: 编排是一种组织和安排信息的过程,它在各种情境中都是非常重要的。在撰写文章、演讲或其他形式的表达…