0

是否可以使用杰克逊库中的 CsvMapper 在引号之间包装来自 pojo 的数字字段?

public class Pojo{
    public String name;
    public int age;
}

使用 CSVMapper 杰克逊

Pojo pojo = new Pojo();
pojo.name= "Peter";
pojo.age= 22;
final CsvMapper csvMapper = new CsvMapper();
csvMapper.configure(CsvGenerator.Feature.ALWAYS_QUOTE_STRINGS, true);
final CsvSchema schema = csvMapper.schemaFor(Pojo.class).withoutHeader().withQuoteChar(CsvSchema.DEFAULT_QUOTE_CHAR);
final ObjectWriter ow = csvMapper.writer(schema);
 System.out.println(ow.writeValueAsString(pojo))  

我的预期输出将是"peter","4",但我得到"peter",4:c

4

1 回答 1

1

只需添加

@JsonFormat(shape=JsonFormat.Shape.STRING) 

到你的 pojo 类的 int 字段:

public class Pojo{
    public String name;
    @JsonFormat(shape=JsonFormat.Shape.STRING) 
    public int age;
}

它可能看起来很奇怪,因为它是 JSON 注释而不是 CSV,但它足够接近工作

于 2021-10-28T20:33:54.137 回答