Я пытаюсь прочитать шаблон Yaml, динамически заменить некоторые поля в шаблоне и создать новый файл Yaml. Мой результирующий файл yaml должен отражать шаблон во всех аспектах, включая двойные кавычки. Но мне не хватает двойных кавычек для обязательных полей, когда я использую змейку yaml. Может кто-нибудь предложить, пожалуйста, решить эту проблему?
Пример:
Мой шаблон yaml выглядит так:
version: snapshot-01
kind: sample
metadata:
name: abc
groups:
id: "1000B"
category: category1
Я читаю вышеуказанный шаблон и динамически заменяя обязательные поля, как показано ниже.
Yaml yaml = new Yaml();
InputStream inputStream = this.getClass().getClassLoader().getResourceAsStream(yamlTemplateLocation);
Map<String, Object>yamlMap = yaml.load(inputStream);
Теперь я заменяю обязательные поля, как показано ниже
yamlMap.put("version","v-1.0");
Map<String, Object> metadata = (Map<String, Object>) yamlMap.get("metadata");
metadata.put("name", "XYZ");
Map<String, Object> groups = (Map<String, Object>) yamlMap.get("groups");
groups.put("id","5000Z");
groups.put("category","newCategory");
DumperOptions options = new DumperOptions();
options.setDefaultFlowStyle(DumperOptions.FlowStyle.BLOCK);
options.setPrettyFlow(true);
Yaml yaml = new Yaml(options);
String output = yaml.dump(map);
System.out.println(output);
Я ожидаю вывод, как показано ниже
Ожидаемый результат:
version: v-1.0
kind: sample
metadata:
name: XYZ
groups:
id: "5000Z"
category: newCategory
Но на самом деле я получаю вывод, как показано ниже
version: v-1.0
kind: sample
metadata:
name: XYZ
groups:
id: 5000Z
category: newCategory
Моя проблема в том, что мне не хватает двойных кавычек для "id" узел в новом файле yaml. Когда я использую, options.setDefaultScalarStyle (ScalarStyle.DOUBLE_QUOTED), я получаю все поля в двойных кавычках, что не требуется. Мне нужны двойные кавычки только для поля id. Может кто-нибудь, пожалуйста, совет для решения этой проблемы.
Спасибо