有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何防止Jackson在第三方类中序列化字段

这里有一个关于Jackson 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);

(我不认为有所谓的某个序列化程序可以忽略密码,我想要的是不序列化字段的东西) 我不想写太多代码来让它工作,我已经看到了一些关于旧版本Jackson的详细例子,但是对于Jackson 2.3没有

谢谢


共 (1) 个答案

  1. # 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);