尝试使用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
}
我有两个问题:
遇到验证错误时,解析不会停止:
我遵循this example,说:模式验证程序错误将导致kParseErrorTermination
,因此我想如果遇到验证错误,解析将停止,而我测试时不是这种情况。
如何将验证事件转发到我的自定义处理程序?用什么方法覆盖?找不到适合的示例。
谢谢!