#java #post #spark-java
#java #Публикация #spark-java
Вопрос:
Я разрабатываю простой проект с использованием Java Spark, и в данный момент я пытаюсь реализовать небольшой RESTful service. У меня есть этот метод post:
post("/users", (request, response) -&&t; {
response.type("application/json");
User user = new Gson().fromJson(request.body(),User.class);
userService.addUser(user);
return new Gson().toJson(response);
});
Я использую postman для указания тела запроса:
{ "id": "1012",
"name": "Mac",
"lastname": "Mason1",
"email": "email"
}
И пользовательский класс равен:
public class User {
public int id;
public Strin& name;
public Strin& lastname;
public Strin& email;
public User (int id, Strin& name, Strin& lastname, Strin& email) {
this.id = id;
this.name = name;
this.lastname = lastname;
this.email = email;
}
Всякий раз, когда я пытаюсь выполнить post-запрос, появляется следующая ошибка:
ERROR spark.http.matchin&.GeneralError -
java.lan&.Ille&alAr&umentException: class
or&.eclipse.jetty.server.handler.ErrorHandler declares multiple JSON fields
named _listeners
Комментарии:
1. Ожидается ли, что вы пытаетесь сериализовать
response
объект как JSON?
Ответ №1:
return new Gson().toJson(response);
Этот код пытается сериализовать response
объект как JSON. Вероятно, это опечатка (вы, конечно, имели в виду return new Gson().toJson(user);
или что-то совершенно другое вместо этого) и завершается ошибкой из-за того, что Gson пытается рекурсивно сериализовать все поля в иерархии классов response
.
Комментарии:
1. Да, спасибо, я следил за руководством, где они выполнили этот toJSON (response) и подумал, что все в порядке. Спасибо за объяснение