我正在使用Jackson来序列化和反序列化对象。问题是有时我想显示一个字段,有时不想要。
实际上,我在使用@JsonIgnore避免在不需要属性时打印该属性。当我需要时,我会通过以下方式禁用该物业
mapper.getSerializationConfig().disable(SerializationConfig.Feature.USE_ANNOTATIONS);
但这也会禁用我需要的其他注释。
如何获得所需的结果?使用视图?有什么例子吗?
一点pojo来了解我想要什么:
class User { private String username; @JsonIgnore private String password; // getter setter } writeToDB() { mapper.getSerializationConfig().disable(SerializationConfig.Feature.USE_ANNOTATIONS); mapper.writeValueAsString(user); }
并通过REST API可以获取不带密码的用户名(感谢JsonIgnore)
我认为您应该通过创建可以选择性地序列化/忽略密码的自定义Jackson序列化程序来处理这种问题。
这样的注释在运行时应该被认为是不可变的。有 可能 是一些反映把戏来提取JsonIgnore和设置的值,但是,如果是这样,这将是非常严厉的。
JsonIgnore