它不是解析器中的错误.解析器在null终止符为空格之前验证尾随字符.并在发生错误时返回错误代码.但是如果没有空终止符,则可能导致分段错误,类似于strlen().
在较新版本的RapidJSON中,有一个kParseStopWhenDoneFlag.启用后,解析器将在完整的JSON值后停止读取尾随字符.例如
Document d;
const char* s =
"{messageType\" : \"Test1\", \"from\" : \"F2D0B5C6-9875-46B5-8D4F\"}????1";
d.Parse<kParseStopWhenDoneFlag>(s);
assert(!d.HasParseError());
Run Code Online (Sandbox Code Playgroud)
通过使用此标志,解析器将在读取后停止},而不会报告错误.
它尚未在指南中记录.请参阅https://github.com/miloyip/rapidjson/pull/83中的讨论