需求
系统对外暴漏接口出参需要规范统一为key
值全部小写,但是考虑到业务中出参有字符串、Map
、List
、Map
包含List
、List
包含Map
的情况,所以写了个Object
转换key
值工具类
实现思路
使用递归方式调用转换,根据对象类型,使用不同方式遍历转换
实现代码
public static Object convertKeysToLower(Object object) {
//map类型遍历转换key值
if (object instanceof Map) {
Map<String, Object> data = (Map<String, Object>) object;
Map<String, Object> newData = new HashMap<>();
for (Map.Entry<String, Object> entry : data.entrySet()) {
String newKey = entry.getKey().toLowerCase();
//value值回调自身
Object newValue = convertKeysToLower(entry.getValue());
newData.put(newKey, newValue);
}
return newData;
//list类型遍历后循环回调自身
} else if (object instanceof List) {
List<Object> data = (List<Object>) object;
List<Object> newList = new ArrayList<>();
for (Object item : data) {
Object newItem = convertKeysToLower(item);
newList.add(newItem);
}
return newList;
//若为其他类型,如字符串,直接返回
} else {
return object;
}
}
结语
不知道有没有不通的情况,帮我多测测^^