在幕后,Groovy 的 YamlBuilder 正在使用 Jackson 的 JSON 到 YAML 转换器。
Jackson 的转换器确实支持文字块样式,但这需要启用。当前版本的 YamlBuilder 不支持设置选项。
我复制了 YamlBuilder 类和相关的 YamlConverter 类,以便修改设置。
在 YamlBuilder 类中,我修改了这个方法:
public static String convertJsonToYaml(Reader jsonReader) {
try (Reader reader = jsonReader) {
JsonNode json = new ObjectMapper().readTree(reader);
return new YAMLMapper().writeValueAsString(json);
} catch (IOException e) {
throw new YamlRuntimeException(e);
}
}
要这样:
public static String convertJsonToYaml(Reader jsonReader) {
try (Reader reader = jsonReader) {
JsonNode json = new ObjectMapper().readTree(reader);
YAMLMapper mapper = new YAMLMapper()
mapper.configure(YAMLGenerator.Feature.LITERAL_BLOCK_STYLE, true)
return mapper.writeValueAsString(json);
} catch (IOException e) {
throw new YamlRuntimeException(e);
}
}
这允许我这样做:
mapper.configure(YAMLGenerator.Feature.LITERAL_BLOCK_STYLE, true)
这将成功地将 YAML 呈现为文字块:
data: |-
this is
a literal
text value