Json Objekt leeres Array beim lesen

Diskutiere Json Objekt leeres Array beim lesen im Netzwerkprogrammierung Bereich.
NicoDeluxe

NicoDeluxe

Hallo zusammen,

ich habe eine externe API angebunden, die mir ein leeres Array gibt, wenn die "Unit" nicht hinterlegt ist.
Wenn ich aber eine Unit übertragen will, muss ich ein Objekt senden, kein Array.

Kann mir jemand sagen wie ich damit umgehen kann? Wenn ich eine List mache, bekomme ich beim lesen keinen Fehler wenn UNIT leer ist. Mach ich aber keine List, bekomme ich (im Falle dass Unit null ist) eine Fehlermeldung.

Hier mal die json:
Unit ist nicht hinterlegt, die API sendet:
JSON:
 "unit": [],
     "unit_price": {...
Wenn ich aber eine unit hinterlegen will, muss ich wie folgt senden:
JSON:
 "unit": {
        "name": "meinName",
    },
    "unit_price": {....


Java:
@JsonProperty("unit")
private List<Unit> unitList =new ArrayList<>();

@JsonProperty("unit")
private  Unit unit;
 
mrBrown

mrBrown

ich habe eine externe API angebunden, die mir ein leeres Array gibt, wenn die "Unit" nicht hinterlegt ist.
Wenn ich aber eine Unit übertragen will, muss ich ein Objekt senden, kein Array.
Das eine Schema wird beim Senden benutzt, das andere Schema beim Empfangen?

Dann einfach passende DTOs für beide Fälle
 
NicoDeluxe

NicoDeluxe

Öh ja :D wie recht du hast :eek:o_O danke! Ich denke zu 98% zu kompliziert :p Danke und einen schönen Abend
 
NicoDeluxe

NicoDeluxe

Hm hab doch nochmal was hierzu. Es kann nun sein, dass UNIT leer ist (dann kommt leeres Array) oder aber es ist nicht leer, dann kommt das Objekt als nicht Array. Wie kann ich das nun handlen?
 
NicoDeluxe

NicoDeluxe

Geht schon mal in dir richtige Richtung, aber eine einfache Annotation gibts nich :/
 
NicoDeluxe

NicoDeluxe

bin auch der Meinung, dass die API das falsch ausgibt. Ruf morgen beim Anbieter an, sonst mach ich es wie folgt.Sollte klappen

Code:
  ObjectMapper mapper = new ObjectMapper();
            mapper.enable(DeserializationFeature.ACCEPT_EMPTY_ARRAY_AS_NULL_OBJECT);

            List<MyObject> myObjects = mapper.readValue(response.getBody(), new TypeReference<List<MyObject>>() {
            });
 
Thema: 

Json Objekt leeres Array beim lesen

Passende Stellenanzeigen aus deiner Region:
Anzeige

Neue Themen

Anzeige

Anzeige
Oben