Deserializacja List<Objects> za pomocą gsona albo innego...

0

Debuguje obiekt CUSTOMER z List<Object> w srodku i wygląda on tak:

To jest CUSTOMER.class:

public class CUSTOMER { 
 
@XmlElements({
     @XmlElement(name = "ADDRESS", type = ADDRESS.class),
     @XmlElement(name = "ZIP", type = ZIP.class),
     @XmlElement(name = "CITY", type = CITY.class),
     @XmlElement(name = "COUNTRY", type = COUNTRY.class),
 })
 protected List<Object> addressAndZIPAndCITY;
 
 // Inne pola
 }

Ale kiedy deserializuje i tworzę jsona z niego, to zawiera on tylko:

{
"addressAndZIPAndCITY": [
      {
        "value": "some value",
        "type": "some type"
      },
      {
        "value": "some value 2",
        "type": "some type 2"
      }]
}

ADRESS, ZIP, CITY i COUNTRY obiekty tytuły nie pojawiaja sie.

Nie mogę zmienic deklaracji pola addressAndZIPAndCITY jako List<Object>. Czy zna ktoś może jakaś możliwość deserializacji tego jako json z ADRESS, ZIP, CITY itd.? Jak na dole:
Ale bez pisania własnego serializera i bez wykorzystania refleksji.

{
    "addressAndZIPAndCITY": [{
            "ADDRESS": {
                "value": "some value",
                "type": "some type"
            }
        }, {
            "ZIP": {
                "value": "some value 2",
                "type": "some type 2"
            }
        }
    ]
}

.

0

Nie do końca rozumiem jaki efekt chcesz uzyskać. Przecież json nie zawiera informacji o typie czegokolwiek. Żeby dostać coś takiego jak pokazałeś musiałbyś mieć listę obiektów w stylu:

class A extends X{
    Address ADDRESS;
}
class B extends X{
    Zip ZIP;
}

itd.
I wtedy List<X> serializowałoby się do czegoś takiego jak pokazałeś.

1 użytkowników online, w tym zalogowanych: 0, gości: 1