我正在使用泽西(JaxRS和杰克逊)。
我有学生DTO。
class StudentDTO {
private Integer id;
private String name, className, grade;
private String createdAt, modifiedAt;
// getter, setter for all private members above
我希望在创建,阅读和更新中重用DTO。
但是,对于create,只允许使用name,className和grade。对于更新,仅允许className和grade。
我目前的解决方案是使用三种不同的DTO类,一种用于创建,一种用于更新,一种用于读取。
如何只使用一个DTO课程?
答案 0 :(得分:0)
尝试为每种情况创建自定义序列化程序。
通过扩展StdSerializer<T>
创建自定义序列化程序并覆盖serialize(T value, JsonGenerator gen, SerializerProvider provider)
方法并在ObjectMapper中注册它
ObjectMapper mapper = new ObjectMapper();
SimpleModule module = new SimpleModule();
module.addSerializer(StudentDTO.class, new CustomSerializer());
mapper.registerModule(module);
还有一个问题。如果创建对象,除name,className和grade之外的字段为空?你可以尝试在课堂上使用注释@JsonInclude(Include.NON_NULL)
。