如何在Java中使用Jackson生成单行格式的YAML数组
解决方法
你可以通过添加Jackson YAML生成器的配置实现需求,分为全局生效和指定字段生效两种方案:
方案1:全局配置所有数组都输出为单行方括号格式
在构建YAMLFactory时额外启用WRITE_ARRAYS_AS_FLOW_STYLE配置即可,修改后的ObjectMapper初始化代码如下:
ObjectMapper objectMapper = new ObjectMapper( new YAMLFactory() .disable(YAMLGenerator.Feature.WRITE_DOC_START_MARKER) .enable(YAMLGenerator.Feature.MINIMIZE_QUOTES) // 新增以下配置,启用流式数组输出 .enable(YAMLGenerator.Feature.WRITE_ARRAYS_AS_FLOW_STYLE) );
配置后所有数组类型字段都会序列化为方括号包裹的单行格式。
方案2:仅指定字段输出为单行方括号格式
如果不需要全局生效,仅希望lists字段用单行数组格式,不需要修改全局配置,直接在对应字段上添加@JsonFormat注解即可:
@Data private static class Data { private String hello; private int value; // 新增该注解,仅对当前字段生效 @JsonFormat(shape = JsonFormat.Shape.ARRAY, with = JsonFormat.Feature.WRITE_ARRAYS_AS_FLOW_STYLE) private List<String> lists; }
注意事项
WRITE_ARRAYS_AS_FLOW_STYLE配置从jackson-dataformat-yaml 2.12.0版本开始支持,如果你使用的依赖版本低于该版本,请先升级到2.12.0及以上版本。
内容的提问来源于stack exchange,提问作者Ananya
相关产品推荐
相关产品推荐

