2016-07-07 12 views
0

Ich erhalte eine JSON-Antwort in einem RESTful-Endpunkt. Die Felder in der Antwort sind variabel. Insbesondere einige Bereiche, die mir nicht wichtig sind. Wegen einiger Anforderungen muss ich JSR 303 Validierungsannotation zu einer Umschlagsklasse verwenden, um die Antwort zu behandeln.Wie kann ich zusätzliche Felder mit JSR 303 ignorieren?

Der Körper der Antwort ist wie:

{ "parameter1":"val1", "parameter2":"val2", "optional_parameter":"valopt", "not_important_list":["v1","v2","v3"] }

Meine Klasse wie ist:

public class MessageEnvelope { 
    @NotNull 
    @NotBlank 
    public final String parameter1; 

    @NotNull 
    @NotBlank 
    public final String parameter2; 

    //the rest of the fields should be ignored 
} 

I Mapping-Fehler erhalten, weil der die zusätzlichen Felder aus. Wie kann ich die zusätzlichen Felder ignorieren, die mir nicht wichtig sind?

+1

Der Mapping-Fehler klingt wie in der JSON -> Objektbibliothek, die Sie verwenden (z. B. Jackson, GSON). Ich glaube nicht, dass es mit der Validierung zusammenhängt. Ich bin mit Jackson am vertrautesten und es gibt einige direkte Möglichkeiten, es zu sagen, um nicht erkannte Felder in JSON zu ignorieren. –

+1

Korrekt. Dieser Kommentar hat mir geholfen, das Problem herauszufinden. In meinem Fall wird die Deserialisierung mit Jackson durchgeführt und ich könnte sie mit der Annotation @JsonIgnoreProperties (ignoreUnknown = true) vor der Klassendefinition ignorieren. –

Antwort

0

Der Mapping-Fehler war tatsächlich in der JSON -> Objektbibliothek. In diesem Fall "Jackson".

Ich könnte das mit der Annotation vor der Klassendefinition lösen.

@JsonIgnoreProperties(ignoreUnknown=true) 
public class MessageEnvelope { 
    ... 
}