Десереализация Json в REST запросе

244
23 июля 2018, 21:00

Всем привет! У меня такая проблема

@RequestMapping(value = "/createrobot", method = RequestMethod.POST)
public Robot createRobot(
        @RequestParam(value="id", required = false, defaultValue = "-") String id,
        @RequestParam(value="name", required = false, defaultValue = "-") String name,
        @RequestParam(value="age", required = false, defaultValue = "-") String age,
        @RequestBody Robot robot){
    return new Robot(1, "Maks", "456");
}

выполняю запрос в POSTMAN http://localhost:8081/supercontroller/createrobot

передаю Json

{
    "id": 78,
    "name": "-",
    "age": "-"
}

возникает ошибка:

{
    "timestamp": "2018-06-18T11:57:02.825+0000",
    "status": 500,
    "error": "Internal Server Error",
    "message": "Type definition error: [simple type, class ru.asdf.Robot]; nested exception is com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `ru.asdf.Robot` (no Creators, like default construct, exist): cannot deserialize from Object value (no delegate- or property-based Creator)\n at [Source: (PushbackInputStream); line: 2, column: 5]",
    "path": "/supercontroller/createrobot"
}

Вижу что проблема в десериализации, как мне её решить? имеется сущность Robot

public class Robot {
    Integer id;
    String name;
    String age;
    public Robot(int id, String name, String age) {
        this.id = id;
        this.name = name;
        this.age = age;
    }
    public Integer getId() {
        return id;
    }
    public void setId(Integer id) {
        this.id = id;
    }
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public String getAge() {
        return age;
    }
    public void setAge(String age) {
        this.age = age;
    }
}

Какие аннотации использовать?

Answer 1

Проблема скрывалась в отсутсвии конструктора без параметров. После его добавления ошибка пропала.

public Robot() {
}
READ ALSO
Размещение кнопок в активити

Размещение кнопок в активити

Можно ли как-то быстро выстроить кнопки как показано на картинке? Через RelativeLayout - долго, пробовал через LinearLayout, но там ориентация только horizontal...

177
Передача RTP медиа android

Передача RTP медиа android

Реализовую SIP протокол с помощью javaxsip

166
Разработка для Аndroid

Разработка для Аndroid

Помогите с решением вопроса

171
Java лабораторная на многопоточность

Java лабораторная на многопоточность

Создать приложение с 2 параметрами1 параметр задает количество cтудентов, 2-ой параметр задает количество преподавателей

170