我使用rapidjson将json字符串反序列化为对象。当我遇到问题时,不是json的结构,而是内容,我想报告一个错误,说明问题所在的偏移量。
不幸的是,除非它是一个解析错误,否则我看不到在哪里可以获得文档中值的当前偏移量。有没有办法实现这个目标?
例如:
Document doc;
doc.Parse<0>(json.c_str());
if( doc.HasMember( "Country" ) ) {
const Value& country_node = doc["Country"];
if( !isValid(country_node.GetString()) )
cout << "Invalid country specified at position " << country_node.Offset()?????
}
答案 0 :(得分:1)
不幸的是,RapidJSON在DOM API中不支持这一点。
如果您使用SAX API,当遇到无效值时,您可以在处理函数中返回false
,Reader
将生成带有偏移量的kParseErrorTermination
错误。
DOM中不支持这种情况的原因是因为这会导致内存开销,并且可能很少使用。如果您想与社群进一步讨论此功能,请在GitHub发送问题。