使用GenericSchemaValidator并将事件验证转发到自定义处理程序

时间:2019-07-02 14:39:11

标签: json rapidjson

尝试使用RapidJSON :: GenericSchemaValidator验证我的json输入并将SAX事件转发到我的自定义事件处理程序:

FILE* inputJsonFile = fopen("./json.txt", "r");

char readBuffer[4096];
rapidjson::FileReadStream readStream( inputJsonFile , readBuffer, sizeof( readBuffer ) );

rapidjson::AutoUTFInputStream<unsigned, rapidjson::FileReadStream> encodedReadStream(readStream);

MyHandler eventsHandler;
rapidjson::GenericSchemaValidator<rapidjson::SchemaDocument, MyHandler > validator(schema, eventsHandler);

//parsing and validating
rapidjson::Reader reader;    

if (!reader.Parse(encodedReadStream, validator)  && reader.GetParseErrorCode() != rapidjson::kParseErrorTermination  ) {
// Schema validator error would cause kParseErrorTermination, which will handle it in next step.

}

if (!validator.IsValid()) {
    //print the error

}

我有两个问题:

  1. 遇到验证错误时,解析不会停止: 我遵循this example,说:模式验证程序错误将导致kParseErrorTermination,因此我想如果遇到验证错误,解析将停止,而我测试时不是这种情况。

  2. 如何将验证事件转发到我的自定义处理程序?用什么方法覆盖?找不到适合的示例。

谢谢!

0 个答案:

没有答案