在java中将对象转换为映射
如何将对象转换为在java中将对象转换为映射,java,Java,如何将对象转换为Map 其中,键是对象参数.名称和值是对象参数.值 例如:objectobj=新的myObject(“Joe”、“Doe”)转换为地图,键为:姓名、姓氏和值:Joe,Doe。这是您的操作方法: import java.util.Map; import java.util.HashMap; import java.util.Map.Entry; import java.lang.reflect.Field; public class Main { public int a
Map
其中,键
是对象参数.名称
和值
是对象参数.值
例如:
objectobj=新的myObject(“Joe”、“Doe”)代码>转换为地图
,键为:姓名、姓氏和值:Joe,Doe。这是您的操作方法:
import java.util.Map;
import java.util.HashMap;
import java.util.Map.Entry;
import java.lang.reflect.Field;
public class Main {
public int a = 3;
public String b = "Hello";
public static void main(String[] args) {
Map<String, Object> map = parameters(new Main());
for (Entry<String, Object> entry : map.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
}
public static Map<String, Object> parameters(Object obj) {
Map<String, Object> map = new HashMap<>();
for (Field field : obj.getClass().getDeclaredFields()) {
field.setAccessible(true);
try { map.put(field.getName(), field.get(obj)); } catch (Exception e) { }
}
return map;
}
}
import java.util.Map;
导入java.util.HashMap;
导入java.util.Map.Entry;
导入java.lang.reflect.Field;
公共班机{
公共INTA=3;
公共字符串b=“Hello”;
公共静态void main(字符串[]args){
Map=参数(新的Main());
for(条目:map.entrySet()){
System.out.println(entry.getKey()+“:”+entry.getValue());
}
}
公共静态贴图参数(对象obj){
Map Map=newhashmap();
for(字段:obj.getClass().getDeclaredFields()){
字段。setAccessible(true);
尝试{map.put(field.getName(),field.get(obj));}catch(异常e){}
}
返回图;
}
}
基本上,您可以使用反射来获取类中的所有字段。然后,访问对象的所有这些字段。请记住,这仅适用于从获取字段的方法访问的字段。除了使用反射的技巧解决方案外,您还可以使用一行代码尝试jackson
,如下所示:
objectMapper.convertValue(o, Map.class);
测试用例:
@Test
public void testConversion() {
User user = new User();
System.out.println(MapHelper.convertObject(user));
}
@Data
static class User {
String name = "Jack";
boolean male = true;
}
// output: you can have the right type normally
// {name=Jack, male=true}
什么是obj
,什么是参数。。。什么是输入,什么是预期的输出?您需要使用Java反射。可能会对你有所帮助。例如:objectobj=新的myObject(“Joe”、“Doe”)代码>转换为地图
,键为:姓名、姓氏和值乔,你为什么要这样做?这可能会引发许多问题,特别是与范围界定相关的问题(只能获取公共变量,甚至不能获取默认变量)。你想用这个做点什么吗?可能有更好的解决方案。谢谢!这正是我需要的!MapHelper
是从哪里定义/提供的?