我正在使用Java Spark开发一个简单的项目,目前我正在尝试实现一些RESTful服务。我有这个帖子方法:
post("/users", (request, response) -> {
response.type("application/json");
User user = new Gson().fromJson(request.body(),User.class);
userService.addUser(user);
return new Gson().toJson(response);
});
我正在使用邮递员来指定请求的正文:
{ "id": "1012",
"name": "Mac",
"lastname": "Mason1",
"email": "email"
}
User类是:
public class User {
public int id;
public String name;
public String lastname;
public String email;
public User (int id, String name, String lastname, String email) {
this.id = id;
this.name = name;
this.lastname = lastname;
this.email = email;
}
每当我尝试发布帖子请求时,会弹出以下错误:
ERROR spark.http.matching.GeneralError -
java.lang.IllegalArgumentException: class
org.eclipse.jetty.server.handler.ErrorHandler declares multiple JSON fields
named _listeners
return new Gson().toJson(response);
此代码尝试将response
对象序列化为JSON。这可能是一个错字(当然你的意思是return new Gson().toJson(user);
,或者完全不同的东西)并且因为Gson试图递归序列化response
的类层次结构中的所有字段而失败。