mirror of
https://github.com/Xiao-MoMi/craft-engine.git
synced 2025-12-31 04:46:37 +00:00
添加深度合并map的选项
This commit is contained in:
@@ -104,22 +104,27 @@ public class MiscUtils {
|
||||
public static void deepMergeMaps(Map<String, Object> baseMap, Map<String, Object> mapToMerge) {
|
||||
for (Map.Entry<String, Object> entry : mapToMerge.entrySet()) {
|
||||
String key = entry.getKey();
|
||||
Object value = entry.getValue();
|
||||
if (baseMap.containsKey(key)) {
|
||||
Object existingValue = baseMap.get(key);
|
||||
if (existingValue instanceof Map && value instanceof Map) {
|
||||
Map<String, Object> existingMap = (Map<String, Object>) existingValue;
|
||||
Map<String, Object> newMap = (Map<String, Object>) value;
|
||||
deepMergeMaps(existingMap, newMap);
|
||||
} else if (existingValue instanceof List && value instanceof List) {
|
||||
List<Object> existingList = (List<Object>) existingValue;
|
||||
List<Object> newList = (List<Object>) value;
|
||||
existingList.addAll(newList);
|
||||
if (!key.isEmpty() && key.charAt(0) == '$') {
|
||||
Object value = entry.getValue();
|
||||
baseMap.put(key.substring(1), value);
|
||||
} else {
|
||||
Object value = entry.getValue();
|
||||
if (baseMap.containsKey(key)) {
|
||||
Object existingValue = baseMap.get(key);
|
||||
if (existingValue instanceof Map && value instanceof Map) {
|
||||
Map<String, Object> existingMap = (Map<String, Object>) existingValue;
|
||||
Map<String, Object> newMap = (Map<String, Object>) value;
|
||||
deepMergeMaps(existingMap, newMap);
|
||||
} else if (existingValue instanceof List && value instanceof List) {
|
||||
List<Object> existingList = (List<Object>) existingValue;
|
||||
List<Object> newList = (List<Object>) value;
|
||||
existingList.addAll(newList);
|
||||
} else {
|
||||
baseMap.put(key, value);
|
||||
}
|
||||
} else {
|
||||
baseMap.put(key, value);
|
||||
}
|
||||
} else {
|
||||
baseMap.put(key, value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user