I am using Gson to serialize and deserialize JSON. In my tests, I found that when I pass my Gson object an empty string, it returns null rather than throwing a JsonParseException.
How can I configure Gson so that it throws an error for empty strings?
Here is my 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);
}
}
Here is my Gson factory:
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();
}