java / jersey / jackson - 验证输入JSON

时间:2015-01-12 09:13:03

标签: java json validation jersey jackson

我正在编写一个带有Java / Jersey / Jackson堆栈的REST API。所有JSON解析和生成都是使用Jackson完成的。 REST层由Jersey处理。它将嵌入Grizzly容器中。

在我的API中,我在端点中接受JSON。例如:

@POST
public Response post(final SomeObject input) {
    return ...;
}

验证input的最佳方法是什么?我想验证某些事情:

  • input必须不为空
  • input的某些字段必须为空
  • input的某些字段必须遵循正则表达式(文本字段)
  • input的某些字段必须位于某个范围内(数字字段)
  • ...

如果可能,我想尽可能少地更改我的代码。也就是说,我更喜欢注释我的类,方法和参数来集成验证。

2 个答案:

答案 0 :(得分:4)

您可以使用JSON Schema

由于你使用杰克逊,你可以使用my library来做到这一点。

但是,这意味着您需要更改逻辑,以便接收JSON(作为JsonNode)而不是序列化的POJO,然后才能序列化到您的POJO。

答案 1 :(得分:2)

您还可以BeanValidationApi(javax.validation.constraints),然后使用@NotNull,@Pattern等注释您的字段。泽西岛还提供Bean Validation Support