summaryrefslogtreecommitdiff
path: root/src/data/ValidatingJsonDeserializer.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/data/ValidatingJsonDeserializer.java')
-rw-r--r--src/data/ValidatingJsonDeserializer.java5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/data/ValidatingJsonDeserializer.java b/src/data/ValidatingJsonDeserializer.java
index 511264d..c168821 100644
--- a/src/data/ValidatingJsonDeserializer.java
+++ b/src/data/ValidatingJsonDeserializer.java
@@ -33,14 +33,15 @@ public class ValidatingJsonDeserializer<T> implements JsonDeserializer<T> {
private void checkObject(String path, JsonElement je, Class type) {
JsonObject jsonObj = je.getAsJsonObject();
for (Field f : type.getDeclaredFields()) {
- if (!jsonObj.has(f.getName())) {
+ JsonElement val = jsonObj.get(f.getName());
+ if (!jsonObj.has(f.getName()) || val.isJsonNull()) {
if (f.getAnnotation(Nullable.class) != null) {
// null allowed, skip
continue;
}
throw new JsonParseException("Missing field: " + path + f.getName());
}
- tryValidateProperty(path, jsonObj.get(f.getName()), f);
+ tryValidateProperty(path, val, f);
// TODO: validate type?
}
}