Перечисления в качестве параметров запроса в Spring Boot Rest

Я новичок в весенней загрузке и пытаюсь использовать Enum в качестве параметра запроса на отдых.

Это мой класс Enum:

public enum Month {

    JANUARY (1, "january"), FEBRUARY(2,"february"), MARCH(3,"march"),
    APRIL(4,"april"), MAY(5,"may"), JUNE(6,"june"), JULY(7,"july"),
    AUGUST(8, "august"), SEPTEMBER(9,"september"), OCTOBER(10,"october"),
    NOVEMBER(11,"november"), DECEMBER(12,"december");

    private String desc;
    private int id;

    //Constructure

    //Getters and Setters
}

В моем классе контроллера я использую этот метод:

    @RequestMapping(value = "/testmonth", method = RequestMethod.POST)
        public Month TestForMonth(@RequestBody Month inputPayload) {
            Month response = inputPayload;
            response.setId(inputPayload.getId());
            response.setDesc(inputPayload.getDesc());
            System.out.println("As String: " + inputPayload.getDesc() + ". As int " + inputPayload.getId() + ".");
            return response;
        }

Это мой JSON:

{
    Month: "JANUARY"
}

Но это не работает. Я получаю эту ошибку:

.w.s.m.s.DefaultHandlerExceptionResolver : Resolved [org.springframework.http.converter.HttpMessageNotReadableException: JSON parse error: Cannot deserialize instance of `com.example.simplerestapis.models.Month` out of START_OBJECT token; nested exception is com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot deserialize instance of `com.example.simplerestapis.models.Month` out of START_OBJECT token
 at [Source: (PushbackInputStream); line: 1, column: 1]]

Это похоже на искаженное тело запроса. Я предполагаю, что ваш запрос не является json. Попробуйте опубликовать что-то вроде "ЯНВАРЬ" (с кавычками).

Wojciech Wirzbicki 21.05.2019 09:27

Пожалуйста, также добавьте полезную нагрузку JSON вашего запроса.

Arnaud 21.05.2019 09:27

@Arnaud, спасибо, что сообщили мне.

merdle 21.05.2019 09:30

попробуй только "ЯНВАРЬ" без фигурных скобок

Wojciech Wirzbicki 21.05.2019 09:32

@merdle С удовольствием :) Я разместил это как ответ, чтобы вы могли проголосовать за него.

Wojciech Wirzbicki 21.05.2019 11:16
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
3
5
3 513
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ваше тело объявлено как простое перечисление, а не объект. Поэтому вместо публикации объекта JSON с фигурными скобками попробуйте опубликовать только значение, например:

"JANUARY"

Другие вопросы по теме