Использование Feature.Allow_Comments игнорирует комментарии в непосредственной схеме json, используя следующий код:
public static ProcessingReport validateJson(String jsonSchemaNode, String jsonText)
throws ProcessingException {
JsonFactory jsonFactory = new JsonFactory();
jsonFactory.enable(JsonParser.Feature.ALLOW_COMMENTS);
jsonFactory.enable(JsonParser.Feature.ALLOW_YAML_COMMENTS);
ObjectMapper mapper = new ObjectMapper(jsonFactory)
.configure(JsonParser.Feature.ALLOW_YAML_COMMENTS, true)
.configure(JsonParser.Feature.ALLOW_COMMENTS, true);
JsonNode jsonSchema = null;
final JsonSchemaFactory factory = JsonSchemaFactory.byDefault();
try {
jsonSchema = mapper.readTree(jsonSchemaNode);
return factory.getJsonSchema(jsonSchema).validate(mapper.readTree(jsonText));
} catch (JsonProcessingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return null;
}
Но если файл Json ссылается на другой файл схемы. Комментарии не игнорируются в импортированном файле схемы json.
{
/*Hello,
I'm ABhishekt*/
//This is a comment
"$schema": "http://json-schema.org/draft-04/schema#",
"title": "SubmitProcess",
"description": "Sample COmmand",
"type": "object",
"allOf": [{ "$ref": "resource:/JsonSchema/Schema.json#"}]
}
Так что, если есть какие-либо комментарии в импортированном Schema.json. Это не позволяет комментарии в этом файле.
Пожалуйста, подтвердите, может ли это быть улучшением.
выдает ошибку:
--- BEGIN MESSAGES ---
fatal: content at URI "resource:/JsonSchema/Schema.json#" is not valid JSON
level: "fatal"
uri: "resource:/JsonSchema/Schema.json#"
parsingMessage: "Unexpected character ('/' (code 47)): was expecting double-quote to start field name"
info: "other messages follow (if any)"
--- END MESSAGES ---
Есть ли способ передать маппер / парсер в JsonSchemaFactory?