为了账号安全,请及时绑定邮箱和手机立即绑定

在java中将对象转换为映射

在java中将对象转换为映射

MM们 2021-09-29 10:41:26
我如何将 Object 转换为Map<String, String> where keyis obj.parameter.nameand valueisobj.parameter.value例如:Object obj = new myObject("Joe", "Doe");转换为Map键:名称,姓氏和值:Joe,Doe。
查看完整描述

2 回答

?
不负相思意

TA贡献1777条经验 获得超10个赞

除了使用反射的技巧解决方案外,您还可以尝试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}



查看完整回答
反对 回复 2021-09-29
?
拉丁的传说

TA贡献1789条经验 获得超8个赞

这是你的做法:


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;

    }

}

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


查看完整回答
反对 回复 2021-09-29
  • 2 回答
  • 0 关注
  • 178 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信