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

Java 将对象转为 Map 的几种方法

  在 Java 开发中,有时需要将对象转为 Map,以下是几种方式。

一、Java 对象示例。

package com.test.controller;import lombok.Data;@Data
public class Student {private String name;private String sex;
}

二、对象转为 Map 的几种方式

2.1 使用 Jackson

  可以先将对象序列化为 JSON 字符串,然后再将该字符串反序列化为 Map 对象。

package com.test.controller;import org.codehaus.jackson.map.ObjectMapper;import java.io.IOException;
import java.util.Map;public class Test {public static void main(String[] args) {try {Student student = new Student();student.setName("张三");ObjectMapper mapper = new ObjectMapper();String jsonString = mapper.writeValueAsString(student);Map<String, Object> tmpMap = mapper.readValue(jsonString, Map.class);System.out.println(tmpMap);} catch (IOException e) {e.printStackTrace();}}
}

  运行结果如下。

{name=张三, sex=null}

2.2 使用 Gson

package com.test.controller;import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;import java.lang.reflect.Type;
import java.util.Map;public class Test {public static void main(String[] args) {Student student = new Student();student.setName("张三");Gson gson = new Gson();Type targetType = new TypeToken<Map<String, String>>() {}.getType();Map<String, String> tmpMap = gson.fromJson(gson.toJson(student), targetType);System.out.println(tmpMap);}
}

  运行结果如下。

{name=张三}

2.3 使用 Guava

  Guava 不直接支持对象到 Map 的转换,需要手动创建 Map 并填充数据。

package com.test.controller;import com.google.common.collect.Maps;import java.lang.reflect.Field;
import java.util.Map;public class Test {public static void main(String[] args) {try {Student student = new Student();student.setName("张三");Map<String, Object> tmpMap = Maps.newHashMap();for (Field field : student.getClass().getDeclaredFields()) {field.setAccessible(true);tmpMap.put(field.getName(), field.get(student));}System.out.println(tmpMap);} catch (IllegalAccessException e) {e.printStackTrace();}}
}

  运行结果如下。

{sex=null, name=张三}

2.4 使用 Hutool

  Hutool 有一个 BeanUtil 类可以直接将对象转换为 Map。

package com.test.controller;import cn.hutool.core.bean.BeanUtil;import java.util.Map;public class Test {public static void main(String[] args) {Student student = new Student();student.setName("张三");Map<String, Object> tmpMap = BeanUtil.beanToMap(student);System.out.println(tmpMap);}
}

  运行结果如下。

{name=张三, sex=null}
http://www.xdnf.cn/news/56467.html

相关文章:

  • MySQL安装
  • 栈和队列--数据结构初阶(2)(C/C++)
  • MATLAB 训练CNN模型 yolo v4
  • CSS预处理工具有哪些?分享主流产品
  • 【身份证扫描件识别表格】如何识别大量身份证扫描件将内容导出保存到Excel表格,一次性处理多张身份证图片导出Excel表格,基于WPF和腾讯云的实现方案
  • spring security +kotlin 实现oauth2.0 认证
  • 问题 | RAIM + LSTM 你怎么看???
  • 【图像轮廓特征查找】图像处理(OpenCV) -part8
  • Linux深度探索:进程管理与系统架构
  • 碰一碰发视频源码,碰一碰发视频OEM
  • MySQL快速入门篇---表的操作
  • 【图片转PDF工具】如何批量将文件夹里的图片以文件夹为单位批量合并PDF文档,基于WPF实现步骤及总结
  • 深入理解自监督学习(Self-Supervised Learning):理论与实践
  • Spring MVC
  • Web3核心技术解析:从区块链到C++实践
  • 【沉浸式求职学习day21】【常用类分享,完结!】
  • 【Hive入门】Hive概述:大数据时代的数据仓库桥梁
  • 基于亚马逊云科技 Amazon Bedrock Tool Use 实现 Generative UI
  • Java抽象类、接口和内部类介绍
  • 实例变量与静态变量的区别
  • 24、ASP.NET⻚⾯之间传递值的⼏种⽅式
  • idea2024.1双击快捷方式打不开
  • 室外摄像头异常自检指南+视频监控系统EasyCVR视频质量诊断黑科技
  • 【Linux】线程安全与线程同步
  • C#+Visual Studio 2022为AutoCAD 2022开发插件并显示在Ribbon选项卡
  • 【网络编程】从零开始彻底了解网络编程(三)
  • 榕壹云预约咨询系统:基于ThinkPHP+MySQL+UniApp打造的灵活预约小程序解决方案
  • 解决方案评测|告别复杂配置!基于阿里云云原生应用开发平台CAP快速部署Bolt.diy
  • 使用 Electron 打包可执行文件和资源:完整实战教程
  • [QMT量化交易小白入门]-四十六、年化收益率118%的回测参数,如何用贪心算法挑选50个两两相关性最小的ETF组合