9
0
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:
XiaoMoMi
2025-06-10 21:15:17 +08:00
parent 3a06814a68
commit 5e56ad3db1
3 changed files with 22 additions and 18 deletions

View File

@@ -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);
}
}
}