在Java中验证JSON模式

时间:2020-10-28 08:26:50

标签: java json jsonschema

我已经在2019-09(https://json-schema.org/draft/2019-09/release-notes.html)之前编写了JSON模式。如何使用Java进行验证?

我想编写方法(如果验证失败,则抛出异常):

void validate(Path pathToSchema) throws Exception {
   // validation of schema by pathToSchema
}

P.S。我想验证JSON模式的正确性,而不是通过JSON模式的JSON文档。

2 个答案:

答案 0 :(得分:0)

你对著名的 networknt lib 做了这样的事情:

    JsonSchema schema = null;
    JsonSchemaFactory factory = JsonSchemaFactory.getInstance(VersionFlag.V201909);
    try {
      schema = factory.getSchema(
          "{\n"
              + "  \"$schema\": \"http://json-schema.org/draft/2019-09/schema\",\n"
              + "  \"$id\": \"#MyJsonClassSchema.json\",\n"
              + "  \"type\": \"object\",\n"
              + "  \"properties\": {\n"
              + "    \"myProperty\": {\n"
              + "      \"type\": \"string\"\n"
              + "    }\n"
              + "  }\n"
              + "}"
      );
    } catch (JsonSchemaException e) {
      System.out.println("json schema invalid: \n" + e);
    }
    return schema;

这将从您在输入中设置的架构版本开始验证 json 架构的某些功能。

答案 1 :(得分:-1)

您可以使用Json验证器:-https://github.com/fge/json-schema-validator

或者您可以尝试使用Google Gson解析Json并捕获语法异常以进行验证,如下所示:-

try{
JsonParser parser = new JsonParser();
parser.parse(passed_json_string);
} 
catch(JsonSyntaxException jse){
System.out.println("Not a valid Json String:"+jse.getMessage());
}