@JsonIgnoreProperties用于已知和未知属性

时间:2017-06-01 22:04:05

标签: java json jackson

我当前用于忽略JPA实体的已知属性的注释是:

@JsonIgnoreProperties({"hibernateLazyInitializer", "handler","created","updated","createdBy","lastUpdatedBy"})

除了忽略这些类属性之外,我还想忽略服务器接收的任何未知属性。我知道通过以下注释忽略未知属性的单独方法:

@JsonIgnoreProperties(ignoreUnknown=true)

但不确定如何将此添加到我上面给出的当前注释中。我尝试了下面的多种方法但似乎没有工作,我找不到这个场景的在线示例。

文档上的任何示例或引导也会有所帮助。

1 个答案:

答案 0 :(得分:25)

简短回答

ignoreUnknown设置为true,并在value元素中定义要忽略的属性名称:

@JsonIgnoreProperties(ignoreUnknown = true, 
                      value = {"hibernateLazyInitializer", "handler", "created"})

它是如何工作的?

看看documentation中的这句话(突出显示是我的):

  

在最简单的形式中,注释如下所示:

@Entity
     

at符号字符(@)向编译器指示后面的内容是注释。在以下示例中,注释的名称为Override

@Override
void mySuperMethod() { ... }
     

注释可以包含元素,可以是命名或未命名,并且这些元素有值:

@Author(name = "Benjamin Franklin", date = "3/27/2003")
class MyClass() { ... }
     

@SuppressWarnings(value = "unchecked")
void myMethod() { ... }
     

如果只有一个名为value的元素,那么名称可以省略,如:

@SuppressWarnings("unchecked")
void myMethod() { ... }

处理未知属性的其他方法

要忽略未知属性,您还可以执行以下操作:

ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);