【问题标题】:@JsonIgnoreProperties usage for both known and unknown properties@JsonIgnoreProperties 用于已知和未知属性
【发布时间】:2017-11-03 05:01:09
【问题描述】:

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

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

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

@JsonIgnoreProperties(ignoreUnknown=true)

但不确定如何将其添加到上面给出的当前注释中。我尝试了以下多种方法,但似乎没有一种方法有效,而且我在网上找不到这种情况的示例。

文档中的任何示例或线索也会有所帮助。

【问题讨论】:

  • @CássioMazzochiMolin 是的。谢谢!

标签: java json jackson


【解决方案1】:

将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);

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-09-07
  • 2019-05-07
  • 1970-01-01
  • 2019-01-22
  • 2020-05-06
  • 2023-01-04
相关资源
最近更新 更多