0

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

1 回答 1

1

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

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

这在 DOM 中不受支持的原因是因为这会产生内存开销并且可能很少使用。如果您想与社区进一步讨论此功能,请在GitHub 上提出问题。

于 2015-04-08T09:06:40.790 回答