gpt4 book ai didi

java - 如何防止 jackson 在第三方类中序列化一个字段

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:04:53 25 4
gpt4 key购买 nike

这是 Jackson 2.3 的一个问题,我没有可能更改为其他框架。

我想使用 Jackson 2.3 将对象序列化为 json。一些对象来自实现特定(外部)接口(interface)的第三方库。我想要实现的是防止这些对象中的某些字段被序列化。我无权修改此类,因此@JsonIgnore 不会删除它。这是一个例子

    public interface ThirdParty{
public char[] getPassword();
public String getUser();
public Department getDepartment();
}

我是 Jackson 的新手,但感觉做这样的事情应该相当简单

    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 的东西,我想要的是不序列化该字段的东西)我宁愿不写很多代码来让它工作,我看到过关于 Jackson 旧版本的非常冗长的例子,但没有看到 Jackson 2.3 的例子。

谢谢!

最佳答案

这并不是原始问题的真正答案,但我找到了一种排除特定类型的方法,此代码可确保任何 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);

关于java - 如何防止 jackson 在第三方类中序列化一个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23383121/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com