diff options
Diffstat (limited to 'src/data/ValidatingJsonDeserializer.java')
-rw-r--r-- | src/data/ValidatingJsonDeserializer.java | 5 |
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? } } |