使用CsvMapper
with 时@JsonPropertyOrder
,所有未明确命名的字段都放在 CSV 记录的末尾。这意味着拼写错误会导致不同的 CSV 排序。
例子:
public class Example {
public static void main(String[] args) throws JsonProcessingException {
final CsvMapper csvMapper = new CsvMapper();
System.out.println(csvMapper.writerWithSchemaFor(MyClass.class).writeValueAsString(new MyClass("test", true, 2)));
}
@Data
@AllArgsConstructor
@NoArgsConstructor
@JsonPropertyOrder({"name", "code"})
public static class MyClass {
@JsonProperty("name")
private String name;
@JsonProperty("status")
private boolean status;
@JsonProperty("code")
private Integer code;
}
}
结果:test,2,true
. 由于status
没有明确命名,@JsonPropertyOrder
因此将其放在记录的末尾。CsvMapper
如果抛出异常或者根本没有序列化,我更愿意。
另一个例子是,如果我将@JsonPropertyOrder
上面更改为@JsonPropertyOrder({"name", "stats", "code"})
. 注意 中的错字stats
。这将产生与上述相同的 CSV。
如何配置CsvMapper
为在无法识别的属性上失败或不序列化未命名的属性@JsonPropertyOrder
?