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