2016-08-21 3 views
2

Ich frage mich, ob dies möglich ist. Ich habe eine riesige JSON-Datei zum Parsen und Ändern. Aber nicht alle Felder sind für mich interessant: Ich möchte nur die Felder abbilden, an denen ich interessiert bin, sie modifizieren und dann den ganzen JSON mit allen Feldern speichern, die mir egal waren.Jackson Handhabung der restlichen Felder

Dann nehme ich habe viele Eigenschaften und nur ein Ich bin in dem Namen „MyProp“ interressiert, habe ich versucht, so etwas wie

public class MyMapper extends HashMap { 
    private String myProp; 
    public void setMyProp(String myProp) { 
     this.myProp = myProp; 
    } 
    public String getMyProp() { 
     return myProp; 
    } 
} 

Aber die Eigenschaft „MyProp“ ist immer null (bis I „entfernen sich HashMap "). Stattdessen geht alles in die Karte.

Wäre es nicht nützlich (oder ist es schon möglich?), Konkrete Felder mit Karten zu mischen, um mit bekannten Feldern zu arbeiten, ohne Unbekannte zu verlieren?

Und es wäre besser, nicht HashMap zu verlängern, sondern ein Feld mit allen unbekannten Feldern wie folgt zu halten:

public class MyMapper { 
    private String myProp; 
    private Map remaining = new HashMap(); 
    public void setMyProp(String myProp) { 
     this.myProp = myProp; 
    } 
    public String getMyProp() { 
     return myProp; 
    } 
    @JsonRemaining 
    public Map getRemaining() { 
     return remaining; 
    } 
} 

Wie würden Sie in diesem Fall tun?

Antwort

2

Scheint wie @JsonAnySetter und @JsonAnyGetter Annotationen könnten helfen. Alle irrelecant proerpties gehen in eine Karte gestopft und dann bekommen die Karte Inhalt abgeladen zurück zu json

Siehe how-to hier http://vincentdevillers.blogspot.co.il/2013/08/how-to-map-unknown-json-properties-with.html

+1

Perfect Guide! Danke vielmals. Der Blog verwendet Map und arbeitet nicht mit verschachtelten Knoten, aber usong Map funktioniert in jedem Fall. – mba

+0

guter Kommentar! –

Verwandte Themen