Попытка использовать 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
}
У меня два вопроса:
Анализ не был остановлен, когда произошла ошибка проверки:
Я следовал этому примеру , в котором говорилось: ошибка валидатора схемы привела бы к kParseErrorTermination
Итак, я полагаю, что тогда анализ прекратится, если ошибка валидации была перехвачена, а это не тот случай, когда я это проверял.
Как я могу переслать событие проверки в мой пользовательский обработчик? какой метод переопределить? не могу найти пример для этого.
Спасибо!