campos duplicados em JSON Response

Piscina morta :

Eu estou usando Spring inicialização Jackson dependência e Lombok no meu projeto, e em resposta eu estou recebendo campos duplicados por causa de sublinhado

Esta é a minha classe de modelo:

 @Getter
 @Setter
 @Accessors(chain = true)
 @NoArgsConstructor
 @ToString
 public class TcinDpciMapDTO {

 @JsonProperty(value = "tcin")
 private String tcin;
 @JsonProperty(value = "dpci")
 private String dpci;

 @JsonProperty(value = "is_primary_tcin_in_dpci_relation")
 private boolean is_primaryTcin = true;

 }

Se eu estou usando sublinhado no is_primaryTcincampo eu estou ficando abaixo de resposta com campos duplicados

 {
    "_primaryTcin": true,
    "tcin": "12345",
    "dpci": "12345",
    "is_primary_tcin_in_dpci_relation": true
 }

Se eu remover sublinhado do campo isprimaryTcin, então eu estou recebendo resposta correta

{
    "tcin": "12345",
    "dpci": "12345",
    "is_primary_tcin_in_dpci_relation": true
}

Isso é por causa de sublinhado? mas sublinhado é o preferido para uso em nomes de variáveis ​​certas?

Konrad Botor:

Isto é o que a sua classe olhar como depois delomboking:

public class TcinDpciMapDTO {
    @JsonProperty("tcin")
    private String tcin;
    @JsonProperty("dpci")
    private String dpci;
    @JsonProperty("is_primary_tcin_in_dpci_relation")
    private boolean is_primaryTcin = true;

    public String getTcin() {
        return this.tcin;
    }

    public String getDpci() {
        return this.dpci;
    }

    public boolean is_primaryTcin() {
        return this.is_primaryTcin;
    }

    public TcinDpciMapDTO setTcin(String tcin) {
        this.tcin = tcin;
        return this;
    }

    public TcinDpciMapDTO setDpci(String dpci) {
        this.dpci = dpci;
        return this;
    }

    public TcinDpciMapDTO set_primaryTcin(boolean is_primaryTcin) {
        this.is_primaryTcin = is_primaryTcin;
        return this;
    }

    public TcinDpciMapDTO() {
    }

    public String toString() {
        return "TcinDpciMapDTO(tcin=" + this.getTcin() + ", dpci=" + this.getDpci() + ", is_primaryTcin=" + this.is_primaryTcin() + ")";
    }
}

Se o nome da propriedade gerado não for especificado, Jackson gera descascando prefixo isou getdo getter se estiver usando getter ou usando Java nome do campo se a serialização de campo sem usar um getter. Por padrão Jackson só usa getters durante a serialização. Porque você põe @JsonPropertysobre os campos, Jackson usa ambos os campos e getters e verifica se o campo já é serializado por correspondência gerada nome da propriedade (esta última parte é o meu palpite de qualquer maneira) que não reconhece propriedade gerada a partir de campo is_primaryTcine propriedade gerada a partir de getter is_primaryTcin()como o mesmo (um é internamente chamado is_primaryTcine outro _primaryTcin) - aviso de que se você renomear is_primaryTcina as_primaryTcindesaparece problemas.

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=200259&siteId=1
Recomendado
Clasificación