gpt4 book ai didi

java - 如何将任何类的对象转换为 Java 中的 Map?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:26:12 25 4
gpt4 key购买 nike

在 Spring MVC 中我们必须使用 org.springframework.ui.Model将模型传递给 View 的实例。它不是强类型的,我们必须像这样动态构建对象:

model.addAttribute("departmentID", departmentID);
model.addAttribute("departmentName", departmentName);
model.addAttribute("employees", employees);

但是,我来自 ASP.NET MVC,在那里我将强类型对象传递给 View ,并且我有 ViewDepartmentdepartmentID的类(class), departmentNameemployees字段,我只是将实例传递给 View 。这里不行,但我还是要用ViewDepartment类,因为我偶尔会发送它作为对 AJAX 请求的响应。

所以,为了让它在 Spring MVC 中工作,我需要翻译 ViewDepartment对象到 org.springframework.ui.Model 的实例, 一种方法是构建 org.springframework.ui.Model来自 HashMap :

Model.addAllAttributes(Map<String,?> attributes) 

问题是,如何构建Map<String,?> attributes来自 ViewDepartment 的实例类?创建 HashMap 对象并手动设置每个属性的每个属性不是选项,因为它不是 DRY。我需要一些方法来对任何类执行此操作,因为我在其他 Controller 中有其他模型类。

或者,有人可以告诉这个任务的另一个解决方案,特别是与 Spring MVC 相关。

最佳答案

您可以使用反射来获取所有字段及其值的映射。请注意,如果您有嵌套结构,这会变得很复杂,但对于给定的示例,它应该可以工作,

public Map<String, Object> toMap( Object object ) throws Exception
{
Map<String, Object> map = new LinkedHashMap<>();
for ( Field field : object.getClass().getDeclaredFields() )
{
field.setAccessible( true );
map.put( field.getName(), field.get( object ) );
}
return map;
}

关于java - 如何将任何类的对象转换为 Java 中的 Map?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21062625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com