【问题标题】:How can I ignore extra fields with JSR 303?如何使用 JSR 303 忽略额外字段?
【发布时间】:2016-11-10 07:16:19
【问题描述】:

我在 RESTful 端点中收到 JSON 响应。响应中的字段是可变的。特别是一些我不关心的领域。 由于某些要求,我必须对信封类使用 JSR 303 验证注释来处理响应。

响应的正文如下:

{ "parameter1":"val1", "parameter2":"val2", "optional_parameter":"valopt", "not_important_list":["v1","v2","v3"] }

我的课是这样的:

public class MessageEnvelope {
    @NotNull
    @NotBlank
    public final String parameter1;

    @NotNull
    @NotBlank
    public final String parameter2;

    //the rest of the fields should be ignored
}

由于额外的字段,我收到映射错误。如何忽略我不关心的额外字段?

【问题讨论】:

  • 映射错误听起来像是在 JSON -> 您正在使用的对象库中(例如 Jackson、GSON)。我认为这与验证无关。我最熟悉 Jackson,有一些直接的方法可以告诉它忽略 JSON 中无法识别的字段。
  • 正确。这条评论帮助我弄清楚了这个问题。在我的例子中,反序列化是用 Jackson 完成的,我可以在类定义之前使用 @JsonIgnoreProperties(ignoreUnknown=true) 注释忽略它们。

标签: java rest validation annotations jsr


【解决方案1】:

映射错误实际上是在 JSON -> 对象库中。在本例中为“杰克逊”。

我可以在类定义之前使用@JsonIgnoreProperties(ignoreUnknown=true) 注释来解决这个问题。

@JsonIgnoreProperties(ignoreUnknown=true)
public class MessageEnvelope { 
    ...
}

【讨论】:

    猜你喜欢
    • 2012-11-24
    • 1970-01-01
    • 1970-01-01
    • 2011-08-25
    • 1970-01-01
    • 2011-10-23
    • 2015-06-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多