Ich benutze Retrofit und JacksonConverter, um JSON-Daten von einer API zu holen.JacksonConverter und ObjectMapper für verschachtelte Objekte
Die JSON Antwort ist wie folgt: -
[
{
"id": 163,
"name": "Some name",
"nested": {
"id": 5,
"name": "Nested Name",
}
}
]
Aber in meiner Klasse ich will nur die ID, Name des übergeordneten Objekts und den Namen des verschachtelten Objekts
Ich habe diese Klasse: -
@JsonIgnoreProperties(ignoreUnknown = true)
class A{
@JsonProperty("id")
int mId;
@JsonProperty("name")
String mName;
@JsonProperty("nested/name")
String mNestedName;
}
ich will nicht ein weiteres Objekt für das verschachtelte Objekt in A. erstellen ich möchte nur speichern, das Namensfeld des verschachtelten Objekts in A.
Die obige Klasse wirft keine Ausnahmen, aber der mNestedName ist leer.
Gibt es sowieso eine Möglichkeit, die Daten so zu bekommen? Muss ich die @ JsonProperty für mNestedName ändern.
Dies ist, wie ich meine Retrofit Instanz
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_IGNORED_PROPERTIES, false);
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
Retrofit retrofit = new Retrofit.Builder()
.addConverterFactory(JacksonConverterFactory.create())
.baseUrl(mBaseUrl)
.client(okHttpClient)
.build();
return retrofit;
erklärt haben, und ich bin der Daten durch diese bekommen: -
@GET("something/list/")
Call<List<A>> getA(@Header("Authorization") String authorization);
Warum möchten Sie nicht eine andere Klasse für den verschachtelten JSON definieren? das ist die einfachste Lösung hier. – Hector
@Hector Die geschachtelte Klasse hat viele Felder und ich brauche nur ein bestimmtes Feld. Außerdem werde ich Klasse A in der SQLite-Datenbank speichern. Wenn ich also das verschachtelte Objekt verwende, müsste ich das auch in der Datenbank mit Beziehungen zwischen ihnen speichern. Dies würde viel unnötigen Overhead bedeuten. –