gpt4 book ai didi

java - Spring Java Rest处理反序列化时的无效类型

转载 作者:行者123 更新时间:2023-12-01 19:08:31 26 4
gpt4 key购买 nike

我正在开发用于注册用户的 java REST API。我正在尝试检查发送到 POST 的用户是否其所有字段都有效,以便可以将其保存到数据库,但如果其中一个字段的类型无效,我找不到处理错误的方法。

我的模型User.java

public class User{

@Id
@GeneratedValue(strategy=GenerationType.IDENTITY)
private long id;
@Column
private String description;
@Column
private String date_joined;
@Column
private double age;
//setters and getters
}

用户资源方法:

@POST
@Consumes("application/json")
@Produces("application/json")
public Response postUser(User User)
{
//validate User fields and save to db
// if valid return following, else send Bad Request
return Response.status(Response.Status.CREATED).entity(User).build();
}

我使用ajax通过以下方式发送数据:

{
"date_joined":"27/12/19",
"description":"Currently looking for job",
"age":30
}

此示例效果很好,但我想验证发送的数据是否为无效类型,例如:

{
"date_joined":"27/12/19",
"description":"Currently looking for job",
"age": "thirty"
}

这会产生以下错误

org.codehaus.jackson.map.JsonMappingException: Can not construct instance of double from String value 'thirty': not a valid Double value

有没有办法捕获此类错误?因此,稍后我可以向用户发送一条消息,告知他们发送了无效数据

最佳答案

解决方案是否可以捕获异常并在出现 JsonMappingException 时返回错误消息?

try {
return Response.status(Response.Status.CREATED).entity(User).build();
} catch (JsonMappingException e) {
// Return a 4xx statuscode to indicate a client error and some json containing e.getMessage()
}

请告诉我这是否有用!谢谢!

:)

关于java - Spring Java Rest处理反序列化时的无效类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59505292/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com