获取rapidjson中的节点偏移量?

时间:2015-03-12 00:14:03

标签: c++ json c++11 rapidjson

我使用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()?????
}

1 个答案:

答案 0 :(得分:1)

不幸的是,RapidJSON在DOM API中不支持这一点。

如果您使用SAX API,当遇到无效值时,您可以在处理函数中返回falseReader将生成带有偏移量的kParseErrorTermination错误。

DOM中不支持这种情况的原因是因为这会导致内存开销,并且可能很少使用。如果您想与社群进一步讨论此功能,请在GitHub发送问题。