[英]Java Map<String, Map<String, Object>> convert to String and back
[英]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.