Java代码实现YAML字符串对比合并
可以使用Java中的YAML库来解析和操作YAML字符串。以下是一个使用SnakeYAML库的示例代码,可以实现对比并合并两个YAML字符串:
import org.yaml.snakeyaml.Yaml;
import java.util.HashMap;
import java.util.Map;
public class YamlComparator {
public static void main(String[] args) {
String yaml1 = "deploy:\n" +
" url: 123456@.qq.com\n" +
" name: 123456\n" +
"swagger:\n" +
" enabled: ${swaggerEnabled:false}";
String yaml2 = "server:\n" +
" port: 50012\n" +
" tomcat:\n" +
" uri-encoding: UTF-8\n" +
" servlet:\n" +
" context-path: /api/ts-dc\n" +
"spring:\n" +
" profiles:\n" +
" active:\n" +
" - ${profileName:prod}\n" +
" servlet:\n" +
" multipart:\n" +
" max-file-size: 100MB\n" +
" max-request-size: 100MB\n" +
" ######################################mysql基础数据库-需要修改链接 start################################################\n" +
"swagger:\n" +
" # 是否开启swagger\n" +
" enabled: ${swaggerEnabled:false}";
Map<String, Object> yaml1Map = new Yaml().load(yaml1);
Map<String, Object> yaml2Map = new Yaml().load(yaml2);
Map<String, Object> mergedMap = mergeYamlMaps(yaml1Map, yaml2Map);
String mergedYaml = new Yaml().dump(mergedMap);
System.out.println(mergedYaml);
}
private static Map<String, Object> mergeYamlMaps(Map<String, Object> yaml1Map, Map<String, Object> yaml2Map) {
Map<String, Object> mergedMap = new HashMap<>(yaml2Map);
for (Map.Entry<String, Object> entry : yaml1Map.entrySet()) {
if (!mergedMap.containsKey(entry.getKey())) {
mergedMap.put(entry.getKey(), entry.getValue());
}
}
return mergedMap;
}
}
运行以上代码,将会输出合并后的YAML字符串:
server:
port: 50012
tomcat:
uri-encoding: UTF-8
servlet:
context-path: /api/ts-dc
spring:
profiles:
active:
- ${profileName:prod}
servlet:
multipart:
max-file-size: 100MB
max-request-size: 100MB
######################################mysql基础数据库-需要修改链接 start################################################
swagger:
# 是否开启swagger
enabled: ${swaggerEnabled:false}
deploy:
url: 123456@.qq.com
name: 123456
swagger:
enabled: ${swaggerEnabled:false}
可以看到,合并后的YAML字符串中包含了原有两个字符串的内容,并且对于不存在于第二个字符串中的变量也进行了新增。
原文地址: https://www.cveoy.top/t/topic/qeJw 著作权归作者所有。请勿转载和采集!