Wie gehe ich mit Parametern um, die in Retrofit auf Android ein ARRAY oder OBJECT sein können?

Ich habe ein Problem, bei dem die von mir analysierte API ein OBJECT für einen ARRAY der Größe 1 zurückgibt.

Zum Beispiel antwortet die API manchmal mit:

{
    "monument": [
        {
            "key": 4152,
            "name": "MTS - Corporate Head Office",
            "categories": {},
            "address": {}
        },
        {
            "key": 4151,
            "name": "Canadian Transportation Agency",
            "categories": {},
            "address": {}
        },
        {
            "key": 4153,
            "name": "Bank of Montreal Building",
            "categories": {},
            "address": {}
        }
    ],
}

Allerdings, wenn dasmonument Array hat nur 1 Element, es wird ein Objekt (beachten Sie das Fehlen von[] Klammern) wie folgt:

{
    "monument": {
        "key": 4152,
        "name": "MTS - Corporate Head Office",
        "categories": {},
        "address": {}
    }
}

Wenn ich meine Modelle so definiere, erhalte ich eine Fehlermeldung, wenn nur ein Artikel zurückgegeben wird:

public class Locations {
    public List<Monument> monument;
}

Wenn nur ein Artikel zurückgegeben wird, erhalte ich den folgenden Fehler:

Expected BEGIN_OBJECT but was BEGIN_ARRAY ...

Und wenn ich mein Modell so definiere:

public class Locations {
    public Monument monument;
}

und die API gibt ein ARRAY zurück. Ich erhalte den gegenteiligen Fehler.

Expected BEGIN_ARRAY  but was BEGIN_OBJECT ...

Ich kann in meinem Modell nicht mehrere Artikel mit demselben Namen definieren. Wie kann ich mit diesem Fall umgehen?

Hinweis: Ich kann keine Änderungen an der API vornehmen.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage