private Map<String, String> objToMap(Object o) { Map<String, String> map = new HashMap<>(); Class<?> aClass = o.getClass(); for (Field declaredField : aClass.getDeclaredFields()) { try { declaredField.setAccessible(true); Object o1 = declaredField.get(o); if (o1 == null || StringUtils.isBlank(o1.toString()) || StringUtils.equalsAny(declaredField.getName(), "accessToken", "memberId")) { continue; } map.put(declaredField.getName(), (String) o1); } catch (IllegalAccessException e) { log.error("出现异常", e); } finally { declaredField.setAccessible(false); } } return map; }
时间: 2024-02-14 21:31:17 浏览: 35
这段代码是一个将对象转换为Map的方法。它使用反射来获取对象的所有字段,并将字段名和字段值存储在一个Map中返回。
首先,它通过调用`o.getClass()`来获取传入对象的类。然后,使用`aClass.getDeclaredFields()`获取所有声明的字段。
接下来,通过循环迭代每个字段`declaredField`,设置`declaredField`为可访问(因为有些字段可能是私有的),然后通过调用`declaredField.get(o)`获取字段的值。
在获取字段值后,会进行一些条件判断:
- 如果字段值为`null`,或者为空白字符串,或者字段名等于"accessToken"或"memberId",则跳过该字段继续下一个字段的处理;
- 否则,将字段名和字段值存储在Map中,使用`map.put(declaredField.getName(), (String) o1)`。
最后,将存储了字段名和字段值的Map返回。
需要注意的是,在处理完每个字段后,通过`declaredField.setAccessible(false)`将字段设置为不可访问,以确保代码的安全性和正确性。
请问还有其他问题吗?
相关问题
Map<Object, List<Map<String, Object>>> 按照map的key值排序
要按照Map的key值排序,可以使用TreeMap来实现。TreeMap是基于红黑树实现的,它会根据key的自然顺序或者自定义的Comparator进行排序。
在你的情况下,Map的key是Object类型,所以需要确保Object类实现了Comparable接口或者提供了自定义的Comparator来进行排序。
以下是一个示例代码,演示如何按照Map的key值排序:
```java
import java.util.*;
public class Main {
public static void main(String[] args) {
// 创建一个Map<Object, List<Map<String, Object>>>对象
Map<Object, List<Map<String, Object>>> map = new TreeMap<>();
// 添加一些数据到map中
List<Map<String, Object>> list1 = new ArrayList<>();
list1.add(createMap("name", "Alice", "age", 25));
list1.add(createMap("name", "Bob", "age", 30));
map.put(2, list1);
List<Map<String, Object>> list2 = new ArrayList<>();
list2.add(createMap("name", "Charlie", "age", 35));
list2.add(createMap("name", "David", "age", 40));
map.put(1, list2);
// 按照key值排序
Map<Object, List<Map<String, Object>>> sortedMap = new TreeMap<>(map);
// 输出排序后的结果
for (Map.Entry<Object, List<Map<String, Object>>> entry : sortedMap.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
}
// 辅助方法,用于创建一个包含键值对的Map对象
private static Map<String, Object> createMap(Object... args) {
if (args.length % 2 != 0) {
throw new IllegalArgumentException("参数个数必须为偶数");
}
Map<String, Object> map = new HashMap<>();
for (int i = 0; i < args.length; i += 2) {
map.put((String) args[i], args[i + 1]);
}
return map;
}
}
```
运行以上代码,输出结果如下:
```
1: [{name=Charlie, age=35}, {name=David, age=40}]
2: [{name=Alice, age=25}, {name=Bob, age=30}]
```
注意,这里的排序是按照key的自然顺序进行的。如果你想要自定义排序规则,可以在创建TreeMap对象时传入自定义的Comparator。
List<Map<String, Object>>与JSON 相互转换
可以使用JSON库来实现List<Map<String, Object>>与JSON之间的相互转换。以下是一个示例代码:
```java
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.util.List;
import java.util.Map;
public class JsonUtils {
private static final ObjectMapper mapper = new ObjectMapper();
public static String toJson(List<Map<String, Object>> list) throws Exception {
return mapper.writeValueAsString(list);
}
public static List<Map<String, Object>> fromJson(String json) throws Exception {
return mapper.readValue(json, new TypeReference<List<Map<String, Object>>>() {});
}
}
```
使用示例:
```java
List<Map<String, Object>> list = new ArrayList<>();
Map<String, Object> map1 = new HashMap<>();
map1.put("name", "张三");
map1.put("age", 18);
Map<String, Object> map2 = new HashMap<>();
map2.put("name", "李四");
map2.put("age", 20);
list.add(map1);
list.add(map2);
// list转json
String json = JsonUtils.toJson(list);
System.out.println(json);
// json转list
List<Map<String, Object>> newList = JsonUtils.fromJson(json);
System.out.println(newList);
```
输出结果:
```
[{"name":"张三","age":18},{"name":"李四","age":20}]
[{name=张三, age=18}, {name=李四, age=20}]
```
注意:在转换时需要引入JSON库,这里使用的是Jackson库,也可以使用其他的JSON库。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)