[英]How to convert object of any class to a Map in Java?
在Spring MVC中,我们必须使用org.springframework.ui.Model
实例将模型传递给视图。 它不是强类型的,我们必须像这样动态构建对象:
model.addAttribute("departmentID", departmentID);
model.addAttribute("departmentName", departmentName);
model.addAttribute("employees", employees);
但是,我来自ASP.NET MVC,在那里我将强类型对象传递给视图,我有ViewDepartment
类,它有departmentID
, departmentName
和employees
字段,我只是将实例传递给视图。 这里它不起作用,但我仍然需要使用ViewDepartment
类,因为我偶尔会将它作为对AJAX请求的响应发送。
因此,为了在Spring MVC中工作,我需要将ViewDepartment
对象转换为org.springframework.ui.Model
实例,一种方法是从HashMap
构建org.springframework.ui.Model
:
Model.addAllAttributes(Map<String,?> attributes)
问题是, 如何从ViewDepartment
类的实例构建Map<String,?> attributes
? 创建HashMap对象并手动设置每个属性的每个属性不是选项,因为它不是DRY。 我需要一些方法来处理任何类,因为我在其他控制器中有其他模型类。
或者,可能是,有人可以告诉另一个解决此任务的方法,特别是与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;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.