杰克逊验证输入json对象

时间:2015-01-26 07:18:35

标签: java json validation jackson

我有一个休息服务,如果我有一个示例POST的方法,它使用application / json并且该方法的参数是另一个描述require json字段的类,那么有一种方法可以让jackson验证输入json之前输入方法? 这是一个小代码:

@PUT
@Consumes("application/json")
public UserDataResourceObject login(UserResourceObject userResourceObject)
{
    Query query = getEm().createNamedQuery("User.authorize");
    if (userResourceObject == null)
    {
        throw new WebApplicationException(Response.Status.BAD_REQUEST);
    }
    query.setParameter("username", userResourceObject.getUsername());
    query.setParameter("password", Utility.getMD5Value(userResourceObject.getPassword()));
    Exception e = null;
    try
.................

UserResourceObject描述了这个结构:

{
  "username" : "admin",
  "password" : "123456"
}

我想如果我改变杰克逊上面的json的结构,给我一个示例400(错误请求)的例外。我怎么能这样做?

1 个答案:

答案 0 :(得分:4)

您可以使用Bean Validation(JSR 303)来验证您收到的数据。 您有http://bval.apache.org/http://hibernate.org/validator/个实施。

然后你就可以这样做:

@PUT
@Consumes("application/json")
public UserDataResourceObject login(@Valid UserResourceObject userResourceObject) {