在java中将对象转换为Map <string,string =“”>

时间:2015-06-15 08:23:42

标签: java dictionary

请建议如何在java中将对象转换为Map<String, String>。 尝试了org.apache.commons.beanutils.BeanMap(对象)。 这将返回Map<String, Object only

5 个答案:

答案 0 :(得分:1)

你有没有理由不手动制作?它不是那么麻烦,你可以很容易地实现它,就像这样。

HashMap<String, String> map = new HashMap<>();
//obj represents any object you wanna put inside the map
String key = "your key";
map.put(key, obj.toString());

如果要转换为地图的对象是可迭代对象(例如列表),则可以尝试这样的事情。

ArrayList<Object> list = new ArrayList<>();
HashMap<String, String> map = new HashMap<>();
Integer i = 0;
for (Object s:list) {
    map.put(String.valueOf(i), s.toString());
    i++;
}

答案 1 :(得分:1)

我假设您要将“ Object [] [] obj”转换为Map。在这种情况下,这是我的解决方案:

public static Map<String, String> convert2DArrayObjectToMap(Object[][] object)
{
    Map<String, String> map = new TreeMap<>();

    if (object != null)
    {
        for (int i = 0; i < object.length; i++)
        {
            if (object[i] != null)
            {
                for (int j = 0; j < object[i].length; j++)
                {
                    map.putAll((TreeMap<String, String>) object[i][j]);
                }
            }
        }
    }
    return map;
}

答案 2 :(得分:1)

在 Java 中,您可以使用 Jackson 库轻松地将 Java 对象转换为 Map。

1 - 获取 Jackson (pom.xml)

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.6.3</version>
</dependency>

2 - 将对象转换为地图:

import java.util.List;

public class Student {

    private String name;
    private int age;
    private List<String> skills;

  // getters setters
}



import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.Arrays;
import java.util.Map;

public class ObjectToMapExample {

    public static void main(String[] args) {

        ObjectMapper oMapper = new ObjectMapper();

        Student obj = new Student();
        obj.setName("Test");
        obj.setAge(34);
        obj.setSkills(Arrays.asList("java","node"));

        // object -> Map
        Map<String, Object> map = oMapper.convertValue(obj, Map.class);
        System.out.println(map);

    }

}

输出:

{name=Test, age=34, skills=[java, node]}

答案 3 :(得分:0)

PropertyUtils.describe(object)如何仅适用于Java Bean(意味着实现getter的Java对象)

答案 4 :(得分:-4)

迭代Map<String, Object>并使用newMap.put(key, value.toString());填充新的Map<String, String>