首页 > 解决方案 > 我可以让所有二传手不可见,但一个使用杰克逊?

问题描述

我有一个旧类,其中包含许多要从 JSON 转换为 JSON 的字段。二传手不纯,所以我让所有二传手不可见。

objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.NONE);
objectMapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY);
objectMapper.setVisibility(PropertyAccessor.CREATOR, JsonAutoDetect.Visibility.ANY);

但是有一个设置器实际上设置了两个字段,我需要让它可见。

private String a;

private transient String b;

public void setA(String a)
{
    this.a = a;
    this.b = convertFrom(a);
}

所有的二传手都是公开的。如何使所有二传手不可见,但只有一个二传手可见?

标签: java

解决方案


建议编辑:正如 ExceptionHandler 建议的那样,您可以通过两种方式忽略属性:

  1. 班级水平
  2. 场级

由于您不想执行繁琐的字段级别任务,因此可以通过忽略字段的类级别来完成,如下所示:

@JsonIgnoreProperties您可以忽略在类级别使用注释指定的所有字段或字段。只是不要提及field/s您要反序列化的对象。像这样:

@JsonIgnoreProperties({ "field1", "field2", "field3" })
public class YourClass{
    private String field1;
    private String field2;
    private String field3;
   ...
}

推荐阅读