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

news/2024/11/20 13:27:08/

文章目录

  • 前言
      • 如果通过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 {@AutowiredObjectMapper objectMapper;@Testpublic 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 {@AutowiredObjectMapper objectMapper;@Testpublic 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.ppmy.cn/news/103528.html

相关文章

Beats:如何在 Docker 容器中运行 Filebeat

今天在这篇博客中&#xff0c;我们将学习如何在容器环境中运行 Filebeat。 为了快速了解 Filebeat 是做什么用的&#xff1a; Filebeat用于转发和集中日志数据它重量轻&#xff0c;小型化&#xff0c;使用的资源更少它作为代理安装在你的服务器上它监视来自指定位置的日志文件…

【软件设计与体系结构】 软件体系结构风格

软件体系结构&#xff08;Software Architecture&#xff09; 软件体系结构&#xff08;Software Architecture&#xff09;包括构成系统的设计元素的描述、 设计元素 之间的交互、 设计元素的组合模式以及在这些模式中的约束。 定义 软件体系结构表示系统的框架结构&#xf…

arp欺骗(http)与dns欺骗

Arp欺骗 win7&#xff1a; ip:192.168.127.147 mac:00-0C-29-4F-1C-36 kali: ip:192.168.127.133 mac:00:0c:29:4c:4d:92 arp -a 获取网关 网关&#xff1a;ip&#xff1a;192.168.127.0 mac&#xff1a;00-0c-29-4c-4d-92 fping -g 192.168.127.0/24 192.168.127.1…

Ansible从入门到精通【三】

大家好&#xff0c;我是早九晚十二&#xff0c;目前是做运维相关的工作。写博客是为了积累&#xff0c;希望大家一起进步&#xff01; 我的主页&#xff1a;早九晚十二 专栏名称&#xff1a;Ansible从入门到精通 立志成为ansible大佬 ♣ansible的高级指令 ansible-playbook写一…

【面试】为什么Mysql用B+树做索引而不用B-树或红黑树

文章目录 前言一、B树只有叶节点存放数据&#xff0c;其余节点用来索引&#xff0c;而B-树是每个索引节点都会有Data域。二、那么Mysql如何衡量查询效率呢&#xff1f;三、B树相对于红黑树的区别 前言 原因如下&#xff1a; B树能显著减少IO次数&#xff0c;提高效率B树的查询…

Docker安装SQL Studio

前言 当前镜像是基于SQL Studio官网linux版本的安装包构建而成&#xff0c;镜像的tag和官方安装包的版本是对应的&#xff0c;例如&#xff1a;v1.6.0对应官方linux安装包的v1.6.0版本&#xff0c;目前只有v1.6.0版本的镜像。附上官网安装包下载地址 镜像说明 暴露端口 # 容…

1.Linux初识

在 Linux 系统中&#xff0c;sudo 是一个重要的命令&#xff0c;可以允许普通用户以管理员权限来运行特定的命令。通过 sudo 命令&#xff0c;普通用户可以暂时获取管理员权限&#xff0c;执行需要管理员身份才能执行的操作。 下面是一些关于 sudo 命令的用法&#xff1a; 以管…

Consul

1 下载 官网&#xff1a;https://releases.hashicorp.com/consul 根据自己情况选择自己所需的安装包下载即可。 2 安装 2.1 linux安装consul服务 ## 从官网下载最新版本的Consul服务 wget https://releases.hashicorp.com/consul/1.15.2/consul_1.15.2_linux_amd64.zip ##…