如果通过Map转换成指定的class类

news2024/11/25 7:21:57

文章目录

  • 前言
      • 如果通过Map转换成指定的class类
        • 1. 依赖
        • 2. 前期准备
        • 3. 测试

前言

  如果您觉得有用的话,记得给博主点个赞,评论,收藏一键三连啊,写作不易啊^ _ ^。
  而且听说点赞的人每天的运气都不会太差,实在白嫖的话,那欢迎常来啊!!!


如果通过Map转换成指定的class类

主要使用ObjectMapper类中的方法

1. 依赖

在这里插入图片描述
只要安装springBoot的web依赖即可:

2. 前期准备

要转换的class类:

@Data
class JsonA implements Serializable {
    private static final long serialVersionUID = 3405588158578870522L;
    @JsonProperty("id")
    private String a;
    private String b;
    private BigDecimal bd;
    @JsonProperty("intType")
    private Integer cc;
}

@JsonProperty注解的作用:
把属性的名称序列化另一个名称,属性名称和@JsonProperty(“”)里面的名称是映射关系。

3. 测试


@RunWith(SpringRunner.class)
@SpringBootTest(classes = ThymeleafDemo.class)
@Slf4j
@Data
public class JsonTest {

    @Autowired
    ObjectMapper objectMapper;
    @Test
    public void test_1() throws JsonProcessingException {
        Map<String,Object> map = Maps.newHashMap();
        map.put("a","213");
        map.put("b","123");
        map.put("bd","34");
        map.put("cc",45);

        String json = objectMapper.writeValueAsString(map);
        log.info("MAP:{}",json);
        JsonA jsonA = objectMapper.readValue(json, JsonA.class);
        log.info("JsonA:{}",JSON.toJSONString(jsonA));

    }

    
}

在这里插入图片描述

2023-05-29 17:29:12.599  INFO 28388 --- [           main] com.yzy.controller.JsonTest              : MAP:{"cc":45,"a":"213","b":"123","bd":"34"}
2023-05-29 17:29:13.022  INFO 28388 --- [           main] com.yzy.controller.JsonTest              : JsonA:{"b":"123","bd":34}

因为a和cc被@JsonProperty注解把属性的名称序列化成另一个名称,因此转成JsonA 类的时候,两个对象失败。


/**
 * @author yangzhenyu
 * @version 1.0
 * @description:
 * @date 2023/5/29 15:02
 */
@RunWith(SpringRunner.class)
@SpringBootTest(classes = ThymeleafDemo.class)
@Slf4j
@Data
public class JsonTest {

    @Autowired
    ObjectMapper objectMapper;

    @Test
    public void test_2() throws JsonProcessingException {
        Map<String,Object> map = Maps.newHashMap();
        map.put("id","213");
        map.put("b","123");
        map.put("bd","34");
        map.put("intType",45);

        String json = objectMapper.writeValueAsString(map);
        log.info("MAP:{}",json);
        JsonA jsonA = objectMapper.readValue(json, JsonA.class);
        log.info("JsonA:{}",JSON.toJSONString(jsonA));

    }
}

执行结果:
在这里插入图片描述

2023-05-29 17:33:01.440  INFO 37620 --- [           main] com.yzy.controller.JsonTest              : MAP:{"b":"123","bd":"34","intType":45,"id":"213"}
2023-05-29 17:33:01.771  INFO 37620 --- [           main] com.yzy.controller.JsonTest              : JsonA:{"a":"213","b":"123","bd":34,"cc":45}

只要把map的key值跟@JsonProperty注解上的值一致即可成功转换。

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

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

相关文章

自然语言处理实战项目8- BERT模型的搭建,训练BERT实现实体抽取识别的任务

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下自然语言处理实战项目8- BERT模型的搭建&#xff0c;训练BERT实现实体抽取识别的任务。BERT模型是一种用于自然语言处理的深度学习模型&#xff0c;它可以通过训练来理解单词之间的上下文关系&#xff0c;从而为下游…

spring boot--web响应

2. 响应 前面我们学习过HTTL协议的交互方式&#xff1a;请求响应模式&#xff08;有请求就有响应&#xff09; 那么Controller程序呢&#xff0c;除了接收请求外&#xff0c;还可以进行响应。 2.1 ResponseBody 在我们前面所编写的controller方法中&#xff0c;都已经设置了…

spring集成mybatis

目录 (1)新建javaEE web项目 ​(2)加入相关依赖的坐标 (3) 创建相应的包和类 (4) 配置spring和mybatis的配置文件 在resources中建mybatis-config.xml 在 resources中建spring.xml 在 resources中建db.xml 在 resources中建config.propertis 集成mybatis配置 ,导入myb…

MyBatis参数传递(提供ParamNameResolver类来进行参数封装)源码分析

MyBatis接口方法中可以接收各种各样的参数&#xff0c;MyBatis底层对于这些参数进行不同的封装处理方式。 单个参数&#xff1a;实体类、Map集合、Collection、List、Array以及其他类型。 多个参数&#xff1a;Param注解定义的名称要与sql语句中参数占位符中的名称相同。 这里…

RDD缓存有哪些特点?

RDD之间进行相互迭代计算(Transformation的转换)&#xff0c;当执行开启后&#xff0c;新RDD的生成&#xff0c;代表老RDD的消失。RDD的数据是过程数据&#xff0c;只在处理的过程中存在&#xff0c;一旦处理完成&#xff0c;就不见了。这个特性可以最大化的利用资源&#xff0…

【CSAPP】Binarybomb 实验(phase_1-6+secret_phase)

Binarybomb 实验&#xff08;phase_1-6secret_phase&#xff09; 实验内容 一个“binary bombs”&#xff08;二进制炸弹&#xff0c;下文将简称为炸弹&#xff09;是一个Linux可执行C程序&#xff0c;包含了7个阶段&#xff08;phase1~phase6和一个隐藏阶段&#xff09;。炸…

【CANoe示例分析】0002_SOMEIPDemo

该工程由Vector官方提供,作为仿真SOME/IP节点的示例。Demo中介绍了两种仿真SOME/IP节点的方法,一种是基于arxml数据库的仿真,另一种是没有数据库(arxml、fibex)的仿真。 无论是哪种形式的仿真,如果想要通过CAPL程序接收或者发送SOME/IP信息,都需要添加交互 层的信息,这…

不懂就问:年薪百万的程序员是怎么做到的?

很多人对程序员的第一反应就是“工资高”。 从行业平均薪酬来看&#xff0c;“程序员”相关专业的收入确实更高一点。 但是&#xff0c;“程序员”内部薪资却存在着很大的差异&#xff0c;多数人月薪在1-2万&#xff0c;一线城市可以达到3-5万&#xff0c;而顶级程序员&#…

探索Java面向对象编程的奇妙世界(六)

⭐ 多态(polymorphism)⭐ 对象的转型(casting)⭐ 抽象类⭐ 接口 interface ⭐ 多态(polymorphism) 多态指的是同一个方法调用&#xff0c;由于对象不同可能会有不同的行为。现实生活中&#xff0c;同一个方法&#xff0c;具体实现会完全不同。 比如&#xff1a;同样是调用人“吃…

回归方程的显著性检验——F检验

回归方程的显著性检验——F检验 9.2 回归方程的显著性检验 (edu-edu.com.cn) 概念 记号&#xff1a; y i y_i yi​&#xff1a;真实值&#xff0c;观测值 y ˉ \bar{y} yˉ​&#xff1a;真实值的平均值 y ^ \hat{y} y^​&#xff1a;估计值&#xff0c;预测值 几个差&#x…

Activiti、Flowable与CCFlow的选型对比

前言 工作流是什么&#xff0c;这个问题我们就不在此进行解释了&#xff0c;这里我们主要讲解一下Activiti、Flowable和CCFlow三款工作流的对比&#xff0c;为大家选型时做一些参考。 Activiti和Flowable大家可能多少都听说过&#xff0c;都是国外的工作流引擎&#xff0c;都…

Axure教程—单色面积图(中继器)

本文将教大家如何用AXURE制作单色面积图 一、效果介绍 如图&#xff1a; 预览地址&#xff1a;https://icg26y.axshare.com/ 下载地址&#xff1a;https://download.csdn.net/download/weixin_43516258/87837919?spm1001.2014.3001.5503 二、功能介绍 简单填写中继器内容即…

软件设计师总结-含括学习方法和学习过程,可参考

目录 考前备战宏观    心路历程-感受    学习阶段-计划的安排 微观一、课本和视频的学习    本阶段的目的:    侧重点    涉及的学习方法&#xff08;最后有如何使用这些方法&#xff09;    学习结果 二、32小时通关辅助前面的知识点    本阶段的…

提升企业管理效率的利器——ADManager Plus

在当今信息时代&#xff0c;企业的规模和复杂性不断增长&#xff0c;管理各个方面变得愈发具有挑战性。而在企业管理中&#xff0c;活跃目录&#xff08;Active Directory&#xff09;起着至关重要的作用。它是一种用于组织内部的用户、计算机、组和其他对象进行集中管理的目录…

javascript中的this与函数讲解

前言 javascript中没有块级作用域&#xff08;es6以前&#xff09;&#xff0c;javascript中作用域分为函数作用域和全局作用域。并且&#xff0c;大家可以认为全局作用域其实就是Window函数的函数作用域&#xff0c;我们编写的js代码&#xff0c;都存放在Window函数内&#x…

Hack The Box-Redeemer关卡

TASK 1 任务 1 Which TCP port is open on the machine? 计算机上打开了哪个 TCP 端口&#xff1f; 6379TASK 2 任务 2 Which service is running on the port that is open on the machine? 计算机上打开的端口上运行哪个服务&#xff1f; redisTASK 3 任务 3 What typ…

java学习——java学习进度一String类1(学习记录——供回溯)

String 分割字符串 split( ) String s "1,2,3,4"; //未使用split分割前 System.out.println(s.length());//使用split分割后 String[] ssplit s.split(","); System.out.println(ssplit.length);split( , ) //两个参数都有的时候&#xff0c;第一个为用…

视频编辑软件:迅捷视频工具箱

这是一款功能强大、易于使用的视频编辑工具&#xff0c;支持视频剪辑、视频转换、音频转换、视频压缩、视频水印、字幕贴图等实用功能&#xff0c;可以帮助你制作出高质量的视频作品。&#xff08;传送门&#xff1a;https://www.xunjiepdf.com/xjspgjx&#xff09; 功能简介 …

Linux:CentOS:进程查看和控制

查看 ps 查看静态的进程统计信息top查看动态的进程排名信息pgrep根据特定条件查询进程 PID 信息pstree以树形结构列出进程信息 S ---休眠 R ---运行 Z ---僵死&#xff08;应予以手动终止&#xff09; < ---高优先级 N ---低优先级 …

FrameLayout+LinearLayout实现首页底部菜单

1.布局样式 2.main.xml代码 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"android:layout_height"match_par…