CSV Jackson 映射器将数字字段转换为字符串
CSV Jackson mapper numerical fields into String
是否可以使用 jackson 库中的 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
只需添加
@JsonFormat(shape=JsonFormat.Shape.STRING)
到你的 pojo 的 int 字段 class :
public class Pojo{
public String name;
@JsonFormat(shape=JsonFormat.Shape.STRING)
public int age;
}
它可能看起来很奇怪,因为它是 JSON 注释而不是 CSV,但它已经足够接近工作了
是否可以使用 jackson 库中的 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
只需添加
@JsonFormat(shape=JsonFormat.Shape.STRING)
到你的 pojo 的 int 字段 class :
public class Pojo{
public String name;
@JsonFormat(shape=JsonFormat.Shape.STRING)
public int age;
}
它可能看起来很奇怪,因为它是 JSON 注释而不是 CSV,但它已经足够接近工作了