JAXB Marshall MapInteger, ArrayListString

9

Ich habe ein Objekt, das ich marshallen möchte.

%Vor%

Nehmen wir nun an, wir haben ein boxItem = new BoxItem ()

Wenn ich jaxbMarshaller.marshal (boxItem, System.out); aufrufe, sind die Werte für jeden Eintrag leer.

%Vor%

Wie marshall die Elemente innerhalb der ArrayList in einem Map-Wert?

    
zeal 08.10.2013, 10:53
quelle

2 Antworten

8

Sie sollten @XmlElementWrapper Anmerkungen verwenden. Sie werden verwendet, um ein Wrapper-XML-Element um Collections

zu erzeugen

Definieren Sie einen Wrapper für Ihre ArrayList wie unten,

%Vor%

Definieren Sie Ihre Karte wie folgt in BoxItem class,

%Vor%

Hier ist die komplette Klasse.

%Vor%

Beim Ausführen des obigen Befehls sollte die folgende Ausgabe angezeigt werden:

%Vor%     
Jayamohan 08.10.2013, 11:22
quelle
0

Jayamohans Antwort funktioniert und ist vielleicht die bevorzugte Lösung. Wenn Sie jedoch jemals die RootElement-Klasse (BoxItem) nicht ändern möchten, können Sie Ihre eigene XmlAdapter schreiben, damit JAXB weiß, wie behandelt Fälle wie Map<Integer, ArrayList<String>> .

Siehe Wie Mars Map & lt; String, List & lt; Objects & gt; & gt; ; mit JAXB zum Schreiben eines eigenen XmlAdapter

    
Mojave Storm 22.02.2017 17:31
quelle

Tags und Links