这是杰克逊的一个问题2.3我无法改变其他框架。
我想使用Jackson 2.3将对象序列化为json。 一些对象来自实现特定(外部)接口的第三方库。 我想要实现的是防止这些对象中的某些字段被序列化。 我没有权限修改这个类,所以@JsonIgnore不会削减它。 下面是一个例子
public interface ThirdParty{
public char[] getPassword();
public String getUser();
public Department getDepartment();
}
我是杰克逊的新手,但他觉得做这样的事情应该相当简单
ObjectMapper mapper=new ObjectMapper();
SimpleModule testModule = new SimpleModule("DemoModule",VersionUtil.versionFor(this.getClass()));
testModule.addSerializer(ThirdParty.class, new Some_Serializer_That_Can_Ignore_Password()));
mapper.registerModule(testModule);
(我不认为有一种称为Some_Serializer_That_Can_Ignore_Password的东西,我想要的是没有序列化字段的东西) 我宁愿不写很多代码来使它工作,我已经看到了杰克逊旧版本的相当冗长的例子,但杰克逊2.3没有。
谢谢!
答案 0 :(得分:1)
对于原始问题不是真正的答案,但我找到了一种排除特定类型的方法,此代码可确保任何StackTraceElement
未被序列化。
SimpleModule testModule = new SimpleModule("DemoModule", VersionUtil.versionFor(this.getClass()));
testModule.addSerializer(StackTraceElement.class,new JsonSerializer<StackTraceElement>() {
@Override
public void serialize(StackTraceElement value, JsonGenerator jgen, SerializerProvider provider){/*Do not serialize*/}
});
mapper.registerModule(testModule);