750 Stimmen

Ignorieren neuer Felder in JSON-Objekten mit Jackson

Ich verwende die Jackson JSON-Bibliothek, um einige JSON-Objekte in POJO-Klassen in einer Android-Anwendung zu konvertieren. Das Problem ist, dass sich die JSON-Objekte ändern und neue Felder hinzugefügt werden können, während die Anwendung veröffentlicht wird, aber derzeit bricht es sogar, wenn ein einfaches String-Feld hinzugefügt wird, das sicher ignoriert werden kann.

Gibt es eine Möglichkeit, Jackson anzuweisen, neu hinzugefügte Felder zu ignorieren? (z. B. nicht existierende Felder in POJO-Objekten)? Ein globales Ignorieren wäre toll.

8voto

inOut Punkte 1093

Ich benutze jackson-xxx 2.8.5.Maven-Abhängigkeit wie:

<dependencies>
    <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-core -->
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-core</artifactId>
        <version>2.8.5</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-annotations -->
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-annotations</artifactId>
        <version>2.8.5</version>
    </dependency>

    <!-- https://mvnrepository.com/artifact/com.fasterxml.jackson.core/jackson-databind -->
    <dependency>
        <groupId>com.fasterxml.jackson.core</groupId>
        <artifactId>jackson-databind</artifactId>
        <version>2.8.5</version>
    </dependency>

</dependencies>

Erstens, wenn Sie unbekannte Eigenschaften global ignorieren wollen, können Sie ObjectMapper .
Wie unten:

ObjectMapper objectMapper = new ObjectMapper();

objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);

Wenn Sie eine Klasse ignorieren wollen, können Sie eine Anmerkung hinzufügen @JsonIgnoreProperties(ignoreUnknown = true) auf Ihre Klasse wie:

@JsonIgnoreProperties(ignoreUnknown = true)
public class E1 {

    private String t1;

    public String getT1() {
        return t1;
    }

    public void setT1(String t1) {
        this.t1 = t1;
    }
}

-1voto

Prasanna Punkte 3573

Sie können die spezifische Eigenschaft in Ihrem POJO mit @JsonIgnore annotieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X