- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试读取 Yaml 模板并动态替换模板中的某些字段,并使用 Snake Yaml 创建一个新的 Yaml 文件。但是,当我使用蛇 yaml 时,如果字符串包含必填字段的空格,我会得到转义空格字符。有人可以建议解决这个问题吗?
我在使用空格将 map 转换为 yaml 时遇到了另一个问题。
示例:
--------------------------------
version: snapshot-01
kind: sample
metadata:
name: abc
options: "<placeholder>"
--------------------------------
我正在阅读上述模板并动态替换所需字段,如下所示。
Yaml yaml = new Yaml();
InputStream inputStream =
this.getClass().getClassLoader().getResourceAsStream(yamlTemplateLocation);
Map<String, Object>yamlMap = yaml.load(inputStream);
当我用包含空格的字符串替换占位符时,例如:“abc sfksajfkl jfajfkjakj jqjlkkalkl kajklfjalkd”
yamlMap.put("version","v-1.0");
yamlMap.put("options","abc sfksajfkl jfajfkjakj jqjlkkalkl kajklfjalkd");
我得到的输出为
--------------------------------
version: "v-1.0"
kind: sample
metadata:
name: abc
options: "abc sfksajfkl jfajfkjakj
\ jqjlkkalkl kajklfjalkd "
--------------------------------
注意:它正在生成转义空格字符(即“\”)在“abc sfksajfkl jfajfkjakj\jqjlkkalkl kajklfjalkd”
但我的要求如下 - 不应生成任何转义空格字符
--------------------------------
version: "v-1.0"
kind: sample
metadata:
name: abc
options: "abc sfksajfkl jfajfkjakj jqjlkkalkl kajklfjalkd"
--------------------------------
有人可以帮我解决这个问题吗?提前致谢!
最佳答案
您显示的代码与 YAML 输出不匹配,因为该代码只有单个空格。我假设 YAML 中的内容是放入 map 中的实际字符串,因为您显示的代码不会生成此 YAML,并且您的要求还包括双空格。
转义字符只是换行的副作用。当将带引号的标量拆分为多行时,换行符会折叠成单个空格。但是,单词之间有多个空格,因此 YAML 必须插入转义空格以将第二个空格标记为内容(第二行开头的所有非转义空格都被视为缩进,而不是内容的一部分)。
所以你需要解决的实际问题是断行。您可以像这样禁用它:
DumperOptions options = new DumperOptions();
options.setSplitLines(false);
Yaml yaml = new Yaml(options);
System.out.println(yaml.dump(yamlMap));
顺便说一句,带有换行符和转义空格的 YAML 确实可以正确加载。尽量不要对 YAML 表示提出太具体的要求,因为您无法完全控制它。
关于java - 从映射转换为 yaml 时,Snake yaml 转储器选项会为带有空格的字符串生成不必要的转义空格字符 ("\"),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62047880/
我是一名优秀的程序员,十分优秀!