@JsonIgnore не игнорирует поля в спящем объекте - PullRequest
0 голосов
/ 31 декабря 2018

У меня есть сущность «Задача», у которой есть свойство Id, но мне не нужно возвращать поле в файле JSON.

@Entity
public class Task {
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @JsonIgnore
    private Integer Id;
    @JsonProperty("task")
    private String taskName;

    private String status;
    //getter and setter
}

Однако аннотация @JsonIgnore не фильтрует поле при выполнении запроса на получение, см. Ниже:

{
    "status": "started",
    "timestamps": {
        "submitted": "2018-12-31T00:34:20.718+0000",
        "started": "2018-12-31T00:34:20.718+0000",
        "completed": "2018-12-31T00:34:20.718+0000"
    },
    "id": 40001,
    "task": "q094hiu3o"
}

Как правильно предотвратить «Id»отображаться?

Ответы [ 2 ]

0 голосов
/ 31 декабря 2018

Итак, вот проблема jackson была проблема с hibernate проблема , попробуйте использовать @jsonIgnoreProperties на уровне класса

@JsonIgnoreProperties(ignoreUnknown = true, 
                  value = {"id"})
0 голосов
/ 31 декабря 2018

Вы можете попытаться добавить @JsonIgnore только на свой геттер:

    @JsonIgnore
    public Integer getId() {
        return id;
    }

Также я бы предложил добавить аннотацию @JsonProperty в поле идентификатора, если она доступна в версии Джексона.вы используете:

@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
@JsonProperty(access = Access.WRITE_ONLY)
private Integer id;

WRITE_ONLY Параметр доступа, который означает, что свойство может быть записано (установлено) только для десериализации, но не будет прочитано (получено) при сериализации, то есть значение не входит в сериализацию .

Документация Джексона здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...