当前位置: 首页 > 知识库问答 >
问题:

在java中转换对象到映射

笪成周
2023-03-14

如何将对象转换为贴图

例如:objectobj=新的myObject(“Joe”、“Doe”) 转换为地图,键为:姓名、姓氏和值:Joe,Doe。


共有2个答案

巢烨
2023-03-14

这就是你要做的:

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;
    }
}

基本上,您可以使用反射来获取类中的所有字段。然后,访问对象的所有这些字段。请记住,这只适用于从获取字段的方法中访问的字段。

高晋
2023-03-14

除了使用反射的技巧解决方案,您还可以尝试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}
 类似资料:
  • 问题内容: 我将直接从问题开始,稍后再提供更多背景信息。 简单 :我有一个,它代表一个特定的对象。将其转换为该对象的最佳方法是什么? 我知道您可以使用泛型来遍历所有元素并设置字段,但是什么是嵌套对象呢? 背景 :我有一个使用JSON对象的JAX- RS服务。我的服务处理不同类型的对象,仅代表一个接口。因此,我不知道哪些对象来自外部以及哪个程序正在使用我的服务。 在运行时,我通过界面上的信息。JAX

  • 我有这样一个实体对象: 现在我有一张这样的地图:

  • 我正在寻找更好的性能(转换时间应该非常少)。 本文显示的是来自这个答案的不同API之间的性能统计。 例如,我的发现是我提到的第一个链接(只有很少的记录): null 请帮帮我。

  • 我有下面的pojo 此employee类用于从mybatis orm获取对象列表(list)。 mybatis将输出作为列表返回,因为mybatis不支持将Map作为返回类型 我必须把它转换成地图 我尝试了下面的方法,但没有成功,因为它需要getName()和getId()方法 请告知是否有一种方法可以在不修改员工pojo的情况下使用stream实现。 注意:我知道我们可以使用ofr或for ea

  • 问题内容: 我对用Java转换对象的含义感到困惑。 说你有… 这是怎么回事 变量类型会更改吗,还是变量内的对象会更改?很迷茫。 问题答案: 看一下这个样本:

  • 我在groovy类中有一个Restendpoint,其方法签名如下...... 是一个。在我的post请求中,我传递json。 如果我这样做,我可以看到参数(注意:我知道这是在java样式循环中打印字符串。这不是我想要的)...... 我想要的是一种转换使用groovy读取一个漂亮的Json对象,然后从Json对象读取属性? 谢谢