I am validating date of type java.time.LocalDateTime using json-schema. But I am getting below error:
message= array found, string expected
json-validator dependency
<dependency>
<groupId>com.networknt</groupId>
<artifactId>json-schema-validator</artifactId>
<version>1.0.49</version>
</dependency>
json-schema
"dateInvoiced": {
"type": "string",
"format": "date-time",
"minLength": 1
}
Json
{
"dateInvoiced": "2021-12-01T07:16:31Z"
}
Code for validating json against json schema
public void validateJsonDocument(String payload, ChargeType chargeType,
List<Error> errorList)
throws JsonProcessingException {
try
{
InputStream schemaAsStream =
CreateOrderEventDerivation.class
.getClassLoader()
.getResourceAsStream("jsonSchemas/" + chargeType.getValidationFileType());
JsonSchema schema =
JsonSchemaFactory.getInstance(SpecVersion.VersionFlag.V7).getSchema(schemaAsStream);
ObjectMapper om = new ObjectMapper();
om.setPropertyNamingStrategy(PropertyNamingStrategies.KEBAB_CASE);
JsonNode jsonNode = om.readTree(payload);
Set<ValidationMessage> errorSet = schema.validate(jsonNode);
for (ValidationMessage error : errorSet)
{
String[] errorObj = error.getMessage().split(PaymentServiceConstants.COLON);
errorList.add(new Error(errorObj[0], errorObj[1]));
}
log.info("END: BaseRequestValidator.validateJsonDocument Size of errors:{}", errorList.size());
}catch(Exception e){
e.printStackTrace();
}
}
I don't want to check any specific Date format. Is there any other way to handle java 8 LocalDateTime in json schema because in past I haven't face any issues with java.util.Date.