Ich verwende Gson zum Serialisieren und Deserialisieren von JSON. In meinen Tests habe ich festgestellt, dass, wenn ich mein Gson
Objekt eine leere Zeichenfolge übergebe, es null
zurückgibt, anstatt eine JsonParseException
zu werfen.Verhindern, dass Gson bei der Deserialisierung leerer Zeichenfolgen null zurückgibt
Wie kann ich Gson so konfigurieren, dass es einen Fehler für leere Zeichenfolgen ausgibt?
Hier ist mein Deserializer:
public final class ProjectDeserializer implements JsonDeserializer<Project> {
@Override
public Project deserialize(final JsonElement jsonElement, final Type type, final JsonDeserializationContext context) throws JsonParseException {
final JsonObject jsonObject = jsonElement.getAsJsonObject();
final Identifier name = context.deserialize(jsonObject.get("name"), Identifier.class);
Optional<String> license;
if (jsonObject.has("license")) {
license = Optional.of(jsonObject.get("license").getAsString());
} else {
license = Optional.empty();
}
DependencyGroup dependencies;
if (jsonObject.has("dependencies")) {
dependencies = context.deserialize(jsonObject.get("dependencies"), DependencyGroup.class);
} else {
dependencies = DependencyGroup.of();
}
return Project.of(name, license, dependencies);
}
}
Hier ist meine Gson
Fabrik:
public static Gson gson() {
final GsonBuilder gsonBuilder = new GsonBuilder();
// etc...
gsonBuilder.registerTypeAdapter(Project.class, new ProjectSerializer());
gsonBuilder.registerTypeAdapter(Project.class, new ProjectDeserializer());
// etc...
return gsonBuilder.create();
}
Danke für die ausführliche Antwort. Ich denke, die beste Lösung für mein Projekt ist, statische Methoden für jeden Typ zu haben, die ich deserialisieren könnte, und die Überprüfung dort durchzuführen. – sdgfsdh
@sdgfsdh Gern geschehen. –