gpt4 book ai didi

java - 使用 Jackson CsvMapper 序列化 POJO 时省略字段

转载 作者:行者123 更新时间:2023-12-02 09:36:45 41 4
gpt4 key购买 nike

我正在使用 jackson 将 POJO 序列化为 CSV。我的问题是我无法弄清楚如何在序列化时省略某些字段。我不想注释 POJO,因为它会影响需要这些字段的 JSON 和 XML 序列化。例如

public class POJO {
public string field1; //required by JSON and CSV
public string field2; //only required by JSON
}

有办法实现吗?

最佳答案

对我有用的是将 CsvMapper 设置 com.fasterxml.jackson.core.JsonGenerator.Feature.IGNORE_UNKNOWN 设置为 true

CsvMapper mapper = new CsvMapper(); //com.fasterxml.jackson.dataformat.csv.CsvMapper
MAPPER.configure(Feature.IGNORE_UNKNOWN, true);

将所需的列添加到架构中。

CsvSchema schema = CsvSchema.builder();
.addColumn("A")
.addColumn("C")
.build();

对于我的 POJO

public class MyClass{

@JsonProperty("A")
private string a;

@JsonProperty("B")
private string b;

@JsonProperty("C")
private string c;

//getters setters

}

为了获取 CSV 字符串,我这样做了:

List<MyClass> list = new MyClass();
MyClass row = new MyClass();

row.setA("Value A");
row.setB("Value B");
row.setC("Value C");

list.add(row);

ObjectWriter ow = mapper.writer(schema);
String csv = ow.writeValueAsString(list);

输出(带标题):

A,C
"Value A","Value C"

关于java - 使用 Jackson CsvMapper 序列化 POJO 时省略字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19428279/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com