Имена полей Pojo объекта

121
13 января 2019, 09:00

Почему objectMapper не видит сеттеров полей Pojo объекта?

Класс User

    public class User {
        private String ID;
        private boolean ACTIVE;
        private String UF_PHONE_INNER;
        public String getID() {
            return ID;
        }
        public void setID(String ID) {
            this.ID = ID;
        }
... и т.д.

Класс Users

public class Users {
    private User[] result;
    public User[] getUsers() {
        return result;
    }
    public void setResult(User[] result) {
        this.result = result;
    }
и т.д....

Разбираю JSON

log.debug("jsonString is {}",jsonString);
users.setResult(objectMapper.readValue(jsonString, Users.class).getUsers());

Получаю:

DEBUG log:71 - jsonString is {"result":[{"ID":"1","ACTIVE":true,...
WARN  log:81 - com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "ID" (class ru.bityard.bitrix24.User), not marked as ignorable (3 known properties: "id", "active", "uf_PHONE_INNER"])

Я понять не могу, почему он видит id вместо ID ??? У меня впечатление, что парсер, воспринимает поле ID как объект...

Answer 1

Jackson видя метод setID считает что поле будет называться iD. Добавьте аннотацию @JsonProperty и назовите поля в стиле java

public class User {
    private String id;
    @JsonProperty("ID")
    public void setId(String id) {
        this.id= id;
    }
}
READ ALSO
java Как правильно спрятать JPanel

java Как правильно спрятать JPanel

Хочу по нажатию Кнопки спрятать одну панель, что позволит увидеть другую У меня такой код

151
Flex и div overflow проблемы

Flex и div overflow проблемы

Почему у элемента exampleblock не появляется скроллбар? Если допустим ему задать ширину 100%, то не работаетЕсли например задать ширину для container__content,...

170
Как получить картинку с другого сайта? Js

Как получить картинку с другого сайта? Js

Есть url страницы сайта, как c данной страницы можно получить картинку с id "image"? Допустим, что url: wwwimages

172