diff --git a/src/main/java/com/onfido/JSON.java b/src/main/java/com/onfido/JSON.java index 156f2bd..bdcf017 100644 --- a/src/main/java/com/onfido/JSON.java +++ b/src/main/java/com/onfido/JSON.java @@ -612,9 +612,14 @@ public LocalDate read(JsonReader in) throws IOException { case NULL: in.nextNull(); return null; - default: + case STRING: String date = in.nextString(); + if (date.isEmpty()) { + return null; + } return LocalDate.parse(date, formatter); + default: + throw new IllegalStateException("Expected STRING or NULL but was " + in.peek()); } } } diff --git a/src/test/java/com/onfido/JSONTest.java b/src/test/java/com/onfido/JSONTest.java new file mode 100644 index 0000000..a36c13e --- /dev/null +++ b/src/test/java/com/onfido/JSONTest.java @@ -0,0 +1,16 @@ +package com.onfido; + +import java.time.LocalDate; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +public class JSONTest { + + @Test + public void parsesEmptyDateStringAsNull() { + com.onfido.model.Applicant applicant = + JSON.getGson().fromJson("{\"dob\": \"\"}", com.onfido.model.Applicant.class); + + Assertions.assertNull(applicant.getDob()); + } +}