Spark Java IllegalArgumentException: класс org.eclipse.jetty.server.handler.ErrorHandler объявляет несколько полей JSON с именем _listeners - PullRequest
0 голосов
/ 13 марта 2019

Я занимаюсь разработкой простого проекта с использованием 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

1 Ответ

1 голос
/ 13 марта 2019
return new Gson().toJson(response);

Этот код пытается сериализовать объект response как JSON. Вероятно, это опечатка (наверняка вы имели в виду return new Gson().toJson(user);, или что-то совсем другое), и она не работает из-за того, как Gson пытается рекурсивно сериализовать все поля в иерархии классов response.

...