Java Jackson验证输入json对象

Java Jackson验证输入json对象,java,json,validation,jackson,Java,Json,Validation,Jackson,我有一个rest服务,如果我有一个使用application/json的示例帖子的方法,并且该方法的参数是另一个类,它描述requireJSON的字段,那么有没有办法让jackson在输入该方法之前验证输入json? 下面是一个小代码: @PUT @Consumes("application/json") public UserDataResourceObject login(UserResourceObject userResourceObject) { Query query = g

我有一个rest服务,如果我有一个使用application/json的示例帖子的方法,并且该方法的参数是另一个类,它描述requireJSON的字段,那么有没有办法让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"
}

如果我改变jackson上面json的结构,我想为示例400(错误请求)抛出一个异常。我该怎么做呢?

您可以使用Bean验证(JSR303)来验证您收到的数据。 您已经有了新的技术和实现

然后你可以这样做:

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

您可以使用Bean验证(JSR303)来验证您收到的数据。 您已经有了新的技术和实现

然后你可以这样做:

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

你可以用一个。既然您使用了Jackson,就可以使用来验证。但是,这意味着您需要将JSON直接接收到方法中,并且仅当模式发现它有效时才进行映射。。。在输入方法之前,我不知道有什么方法可以这样做。谢谢,但我正在为此搜索其他方法。此外,我在某个地方读到,我可以在参数定义之前放置@Valid Anotion,但它不起作用,您可以使用。既然您使用了Jackson,就可以使用来验证。但是,这意味着您需要将JSON直接接收到方法中,并且仅当模式发现它有效时才进行映射。。。在输入该方法之前,我不知道如何执行该操作。谢谢,但我正在为此搜索其他方法。此外,我在某个地方读到,我可以在参数定义之前放置@Valid Anotion,但它不起作用,谢谢此我的帮助:)谢谢此我的帮助:)