我正在尝试找到一种方法将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...]
)并将其添加到传递给jsonGenerator的jsonGenerator中。
调用
serialize(...)
方法
jasonGenerator.writeStringField("ArrayList", list_string.toString()).
然而,当我打电话
String yamlString = mapper.writeValueAsString(object_to_serialize)
输出采用
的形式'[list-element1,list-element2,list-element3...]'
(引用),即使在相应的YAMLFactory中启用了最小化引号。 除了解析yamlString并替换有问题的字符之外,还有其他解决方案吗?
答案 0 :(得分:0)
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",
]
答案 1 :(得分:0)
似乎没有其他解决方案,并且很可能与java-to-yaml序列化的过程有关。表现出相同的行为,不仅在我尝试输出带括号字符的列表时,而且还在包含冒号的字符串中,并且通常看起来每当库解析违反某些条件的字符串时(例如以空格开头,或包括它用于yaml输出的字符),用引号包装它。