/ / Json / Джексон іменування - java, json, jackson

JSON / Jackson іменування конвенції - java, json, jackson

Мій клас виключення виглядає таким чином, при серіалізації за допомогою jackson, коли я намагався десеріалізувати його учасники отримали назву "повідомлення" і "restoreStatus", я очікував, що вони будуть" повідомленням "і"статус".

Чому jackson вирішив назвати мінливу стану як restoreStatus?

@XStreamAlias("RestoreInProgressException")
public class RestoreInProgressException extends HostManagerException {

private static final long serialVersionUID = xxxx;

private RestoreStatus status;

@JsonCreator
public RestoreInProgressException(@JsonProperty("message") String message, @JsonProperty("status") RestoreStatus status) {
super(message, HttpStatus.SC_CONFLICT);
this.status = status;
}

public RestoreStatus getRestoreStatus() {
return this.status;
}

}

Відповіді:

1 для відповіді № 1

Будь ласка, дивіться це питання Джексон поля серіалізації знайти деяку інформацію, як алгоритм серіалізації працює в бібліотеці Джексона. У вашому прикладі ви маєте status власності, але getRestoreStatus метод геттера. Джексон читає всі геттер-методи з класу і намагається його серіалізувати. Джексон також додасть до вихідного JSON ваш status властивість, якщо ви коментуєте його @JsonProperty або @JsonProperty("status"). У цьому випадку ваш вивід Jackson буде містити два властивості status і restoreStatus. Якщо ви хочете мати тільки status Властивість у вашому вихідному JSON:
I. Змініть назву методу getter на getStatus:

public RestoreStatus getStatus() {
return this.status;
}

II. Додати анотацію @JsonProperty("status") до вашого методу:

@JsonProperty("status")
public RestoreStatus getRestoreStatus() {
return this.status;
}