Deserialisierung eines komplexen ObjektsJava

Java-Forum
Anonymous
 Deserialisierung eines komplexen Objekts

Post by Anonymous »

Ich habe die folgenden Schnittstellen: < /p>

Code: Select all

public interface SearchResult {
....
}

public interface BasicOrange extends IdentifiableOrange {
....
}

public interface OrangeSource extends Identifiable, OrangeDescription, Comparable {
....
}
Jede Schnittstelle hat mindestens eine Implementierung, die mit Standard vorangestellt ist Code> jeweils < /p>

Code: Select all

public class DefaultBasicOrange{
....
@Expose
Set myList;

}
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. >

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
brauche ich so etwas wie .registerTypeHierarchyadapter ?

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post