这是我用来阅读boost::property_tree::json_parser::read_json
它始终有效。
/**********************************************/
/* the title */
/**********************************************/
{
"garden": {
"side1": {
"treeA1": "apple",
"treeA2": "orange",
"treeA3": "banana",
},
"side2": {
"treeB1": "orange",
"treeB2": "palm",
"treeB3": "cherry",
}
},
"house": ""
}
我将我的提升版本从1.58.0
升级到1.65.0
,现在我因为评论而收到异常。当我删除评论时,一切都很好。
我在某处犯了错误,或者是新版本的增强版中的错误?
答案 0 :(得分:3)
评论不是JSON。
旧的解析器确实有它们,但没有正确支持unicode。
以下是the release notes for Boost 1.59.0中的消息:
属性树:
- 具有完全Unicode支持的新JSON解析器。
- 的断 更改:新解析器不支持注释或字符串 JSON文件中的串联。这些功能是非标准的 旧解析器的扩展,但删除它们可能会破坏代码 是依靠他们。
答案 1 :(得分:0)
official JSON standard没有定义评论的语法(here's the reason why)。
在每个解析器的基础上实现(或不实现)对注释的支持。这可能是Boost曾经为了方便起见而支持的东西,后来因为合规而被删除(我猜测,因为我自己不使用Boost)。
如果Boost不再支持评论,则必须在解析之前将其删除。出于这个目的,有很多第三方实现。有关建议,请参阅Can comments be used in JSON?。