使用 Jackson 将 Java 对象实例写入 YAML

Posted

技术标签:

【中文标题】使用 Jackson 将 Java 对象实例写入 YAML【英文标题】:Writing Java object instance to YAML using Jackson 【发布时间】:2018-03-08 19:42:41 【问题描述】:

我有一个“示例”Pojo 类,如下所述。 任何人都可以使用 Jackson 将 Example 类的实例保存到 YAML 文件中。

public class Example 

String name;
int value;

public String getName() 
    return name;


public void setName(String name) 
    this.name = name;


public int getValue() 
    return value;


public void setValue(int value) 
    this.value = value;

【问题讨论】:

只是说,SnakeYaml 可以自己完成此操作,并且与使用 Jackson 相比,您可以对其进行更多控制。如果 Jackson 不是必需的,请将其删除并直接使用 SnakeYaml。 【参考方案1】:

杰克逊有一个module that supports YAML。确保您将required dependency 添加到您的项目中,然后您可以按如下方式使用它:

// Create an ObjectMapper mapper for YAML
ObjectMapper mapper = new ObjectMapper(new YAMLFactory());

// Write object as YAML file
mapper.writeValue(new File("/path/to/yaml/file"), example);

或者你可以将你的对象写成一个字符串:

// Write object as YAML string
String yaml = mapper.writeValueAsString(example);

【讨论】:

当我使用这段代码时,它会在文件的第一个添加一行(注释行为---)??这个拳头线怎么去掉? @M2E67 试试ObjectMapper mapper = new ObjectMapper(new YAMLFactory().disable(Feature.WRITE_DOC_START_MARKER));。请参阅documentation。

以上是关于使用 Jackson 将 Java 对象实例写入 YAML的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Jackson 将原始 JSON 反序列化为 Java 对象

jackson中objectMapper的使用

JSON到POJO作为使用jackson java的对象类

Apache Beam 的 BigQueryIO (Java):无法将 TIMESTAMP 字段写入 BigQuery——fastxml.jackson 异常“类型不支持”

使用 Spring 和 Jackson JSON 将 java.io.Serializable 实例序列化为 JSON [重复]

Java Jackson如何在自定义序列化程序中为对象使用默认序列化程序