繁体   English   中英

将对象转换为地图<String, String>在 Java 中

[英]Convert object to Map<String, String> in java

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

PropertyUtils.describe(object)怎么样,虽然它只适用于 Java Beans(意思是实现 getter 的 Java 对象)

我假设您想将“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;
}

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

1 - 获取杰克逊 (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]}

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM