json schema validation error with LocalDateTime-array found, string expected

Viewed 61

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.

0 Answers
Related