Deserialisierung eines komplexen Objekts
Posted: 02 Feb 2025, 15:57
Ich habe die folgenden Schnittstellen: < /p>
Jede Schnittstelle hat mindestens eine Implementierung, die mit Standard vorangestellt ist Code> jeweils < /p>
Entschuldigung für die vage, da ich nur die minimal erforderlichen Informationen hinzugefügt habe - die tatsächlichen Attribute/Methodenlisten sind sehr lang. Außerdem enthält der Standardbasicorange andere Attribute, die durch ihren Schnittstellentyp definiert werden. Ich habe gerade eine als Beispiel gezeigt. > Und ich möchte diese Antwort in JSON konvertieren und ich muss es auch zurücklesen können. >
brauche ich so etwas wie .registerTypeHierarchyadapter ?
Code: Select all
public interface SearchResult {
....
}
public interface BasicOrange extends IdentifiableOrange {
....
}
public interface OrangeSource extends Identifiable, OrangeDescription, Comparable {
....
}
Code: Select all
public class DefaultBasicOrange{
....
@Expose
Set myList;
}
Code: Select all
Gson gson = new GsonBuilder()
.excludeFieldsWithoutExposeAnnotation()
.registerTypeAdapterFactory(new GsonValueFieldTypeAdapterFactory())
.create()
var responseJson = gson.toJsonTree(response);
< /code>
Ich habe Folgendes ausprobiert, um es von JSON zurückzulesen, aber es beschwert sich über die interne Schnittstellenverwendung: < /p>
TypeToken typeToken = new TypeToken() {};
SearchResult cachedResponse = gson.fromJson(
responseJson,
typeToken.getType());
< /code>
Der Fehler lautet: < /p>
Caused by: com.google.gson.JsonIOException: Interfaces can't be instantiated! Register an InstanceCreator or a TypeAdapter for this type. Interface name: com.something.OrangeSource