Object转map
时间: 2023-07-30 14:10:07 浏览: 102
将一个 Object 转为 Map,可以使用 Java 8 中的 Stream,具体代码如下:
```
Map<String, Object> map = obj.entrySet().stream()
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
```
其中,obj 为要转换的 Object 对象。这里使用了 Java 8 中的 Stream,对 obj 中的每个键值对进行了映射,然后通过 Collectors.toMap() 方法将映射结果收集到一个 Map 中。
如果 obj 中包含重复的键,可以使用 mergeFunction 参数来指定如何处理冲突,例如:
```
Map<String, Object> map = obj.entrySet().stream()
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue, (v1, v2) -> v1));
```
上面的代码中,当 obj 中出现重复的键时,保留第一个值。如果要保留第二个值,可以将 mergeFunction 参数改为 (v1, v2) -> v2。
相关问题
object 转map
好的,让我来回答你的问题。首先需要明确,将一个对象转换为 Map 对象可以有多种实现方式,以下是其中一种较为简单的方法:
```java
public static Map<String, Object> objectToMap(Object obj) {
Map<String, Object> map = new HashMap<>();
try {
BeanInfo beanInfo = Introspector.getBeanInfo(obj.getClass());
PropertyDescriptor[] propertyDescriptors = beanInfo.getPropertyDescriptors();
for (PropertyDescriptor property : propertyDescriptors) {
String key = property.getName();
if (key.compareToIgnoreCase("class") == 0) {
continue;
}
Method getter = property.getReadMethod();
Object value = getter != null ? getter.invoke(obj) : null;
map.put(key, value);
}
} catch (Exception e) {
e.printStackTrace();
}
return map;
}
```
这段代码的作用是将一个 Java 对象转换成一个 key-value 形式的 Map 对象。该方法的参数为一个 Object 对象,返回一个 Map<String, Object> 对象。大致思路是通过 Java 反射机制获取对象的属性值,然后将属性名和属性值存到 Map 对象中。这个方法可以很方便地应用于需要将对象序列化为 JSON 格式等场景中。
希望能够帮助到你,如果还有其他问题可以继续问我哦!
Object 转 Map
将一个 Object 转换为 Map 可以使用如下代码:
```java
public static <K, V> Map<K, V> objectToMap(Object obj) throws IllegalAccessException {
if (obj == null) {
return null;
}
Map<K, V> map = new HashMap<>();
Field[] declaredFields = obj.getClass().getDeclaredFields();
for (Field field : declaredFields) {
field.setAccessible(true);
map.put((K) field.getName(), (V) field.get(obj));
}
return map;
}
```
这里使用反射获取对象的成员变量,然后将其转换为 Map。需要注意的是,这个方法只能将对象的公共成员变量转换为 Map,而私有成员变量需要使用 `getDeclaredFields()` 方法来获取。
阅读全文