如何使用Jacksonyaml将Java List打印为大括号([ ])格式的Yaml List

z4iuyo4d  于 7个月前  发布在  Java
关注(0)|答案(2)|浏览(96)

我试图找到一种方法来打印Java ArrayLists到Yaml列表,格式如下:

[list-element1,list-element2,list-element3...]

然而,我只设法以另一种格式将它们打印到Yaml列表中:

-list-element1
-list-element2
-list-element3

有没有一种方法,第一个可以做一个 * 设置 * 在Jackson?我知道这可以用SnakeYaml来完成,但我不想走这条路。
如果这个问题的答案是否定的,我还创建了一个自定义序列化器,它将Java列表序列化为所需的格式([list-element1,list-element2,list-element3...]),并通过调用

jasonGenerator.writeStringField("ArrayList", list_string.toString()).

但是,当我打电话给

String yamlString = mapper.writeValueAsString(object_to_serialize)

输出的形式是

'[list-element1,list-element2,list-element3...]'

(带引号),即使在相应的YAMLFactory中启用了最小化引号。除了解析yamlString和替换违规字符之外,还有其他解决方案吗?

vd8tlhqk

vd8tlhqk1#

似乎没有其他解决方案,并且很可能与java-to-yaml序列化的过程有关。同样的行为表现出来,不仅当我尝试输出带有大括号字符的列表时,而且在包含冒号的字符串中也是如此,通常情况下,每当库解析违反某些条件的字符串时(例如,以空格开头,或者包含用于yaml输出的字符),它都会用引号将其 Package 起来。

emeijp43

emeijp432#

YAMLGenerator.Feature.CANONICAL_OUTPUT可能会帮助您:

YAMLFactory yf = new YAMLFactory();
yf.enable(YAMLGenerator.Feature.CANONICAL_OUTPUT);
ObjectMapper mapper = new ObjectMapper(yf);
System.out.println(mapper.writeValueAsString(Arrays.asList(1,3,5)));

它将产生:

---
[
  "1",
  "3",
  "5",
]

相关问题