Jackson переименовывает примитивное булево поле удалением ','

Это могло бы быть дубликатом. Но я не могу найти решение своей проблемы.

У меня есть класс

public class MyResponse implements Serializable {

    private boolean isSuccess;

    public boolean isSuccess() {
        return isSuccess;
    }

    public void setSuccess(boolean isSuccess) {
        this.isSuccess = isSuccess;
    }
}

Методы считывания и методы set сгенерированы Eclipse.

В другом классе я установил значение к истинному, и пишу это как строку JSON.

System.out.println(new ObjectMapper().writeValueAsString(myResponse));

В JSON ключ прибывает как {"success": true}.

Я хочу ключ как isSuccess самостоятельно. Jackson использует метод установщика в то время как сериализация? Как сделать ключ самим именем поля?

61
задан 19 July 2018 в 14:04

2 ответа

Используя обе аннотации ниже, вынуждает вывод JSON включать is_xxx:

@get:JsonProperty("is_something")
@param:JsonProperty("is_something")
3
ответ дан 31 October 2019 в 15:56

Я не хотел смешивать с некоторыми пользовательскими стратегиями именования, ни воссозданием некоторых средств доступа.
, Чем меньше кода, тем более счастлив я.

Это добилось цели для нас:

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.fasterxml.jackson.annotation.JsonProperty;

@JsonIgnoreProperties({"success", "deleted"}) // <- Prevents serialization duplicates 
public class MyResponse {

    private String id;
    private @JsonProperty("isSuccess") boolean isSuccess; // <- Forces field name
    private @JsonProperty("isDeleted") boolean isDeleted;

}
0
ответ дан 31 October 2019 в 15:56

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

Похожие вопросы: