在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
是从哪里定义/提供的?