Парсер ошибок Джексона пытается разрешить подтип, но мой класс - простой POJO - PullRequest
0 голосов
/ 04 октября 2018

ошибка сообщения:

{
    "@class": "java.util.LinkedHashMap",
    "timestamp": [
        "java.util.Date",
        "2018-10-04T17:12:35.742+0000"
    ],
    "status": 400,
    "error": "Bad Request",
    "message": "JSON parse error: Missing type id when trying to resolve subtype of [simple type, class br.com.adtsys.ciee.auth.user.data.request.LoginRequest]: missing type id property '@class'; nested exception is com.fasterxml.jackson.databind.exc.InvalidTypeIdException: Missing type id when trying to resolve subtype of [simple type, class br.com.adtsys.ciee.auth.user.data.request.LoginRequest]: missing type id property '@class'\n at [Source: (PushbackInputStream); line: 4, column: 1]",
    "path": "/auth/login"
}

, но мой класс - простой POJO

@Getter
@Setter
@Builder
@AllArgsConstructor
@NoArgsConstructor
public class LoginRequest implements Serializable {

    private String username;
    private String password;
}

Этот объект является параметром в моем контроллере, где я делаю запрос на метод POSTи этот объект аннотируется аннотацией @Body, и когда я вызываю пружину конечной точки отдыха, пытаюсь преобразовать мой JSON в мой объект, но эта ошибка происходит.Я использую библиотеку Джексона, встроенную в весеннюю загрузку версии 2.0.5, эта ошибка начала появляться после того, как я обновил версию весенней загрузки 1.5.3 до 2.0.5.Я уже искал об этой проблеме, но, к сожалению, ничего до сих пор.Кто-то знает что-то об этой проблеме.

1 Ответ

0 голосов
/ 04 октября 2018

После многих исследований я обнаружил, что мне нужно отправить в свой json свойство с именем свойства @class и значением свойства, которое мне нужно, например, написать имя класса и путь к пакету.Если я отправляю этот JSON, все в порядке.

{
  "@class": "com.mypackage.LoginRequest",
  "username": "000001",
  "password": "adminciee2017"
}

, но если я отправляю JSON, без имени @class свойства имя и значение

{
  "username": "000001",
  "password": "adminciee2017"
}

Джексон не может преобразовать мой JSON и выбрасываетInvalidTypeIdException возвращает этот ответ

{
"@class": "java.util.LinkedHashMap",
"timestamp": [
    "java.util.Date",
    "2018-10-04T20:41:56.369+0000"
],
"status": 400,
"error": "Bad Request",
"message": "JSON parse error: Missing type id when trying to resolve subtype of [simple type, class br.com.adtsys.ciee.auth.user.data.request.LoginRequest]: missing type id property '@class'; nested exception is com.fasterxml.jackson.databind.exc.InvalidTypeIdException: Missing type id when trying to resolve subtype of [simple type, class br.com.adtsys.ciee.auth.user.data.request.LoginRequest]: missing type id property '@class'\n at [Source: (PushbackInputStream); line: 4, column: 1]",
"path": "/auth/login"

}

Мне нужно исследовать больше, потому что мне нужно отключить это требование

...