JSON 文件中是否允许对 boost read_json 进行注释?
Are comments allowed in a JSON file for boost read_json?
这是我一直通读的json文件的同伦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": ""
}
我将 boost 版本从 1.58.0
升级到 1.65.0
,现在由于评论我收到异常。当我删除评论时,一切都很好。
是我哪里弄错了还是新版boost的bug?
official JSON standard does not define a syntax for comments (here's the reason why).
在每个解析器的基础上实施(或不实施)对注释的支持。这可能是 Boost 曾经为了方便而支持但后来为了合规而删除的东西(我推测,因为我自己不使用 Boost)。
如果 Boost 不再支持评论,您将不得不在解析之前将其删除。为此目的,有很多第 3 方实现。请参阅 Can comments be used in JSON? 以获取建议。
评论不是JSON。
旧的解析器确实有它们,但没有正确支持 unicode。
这是 the release notes for Boost 1.59.0 中的消息:
Property Tree:
- A new JSON parser with full Unicode support.
- Breaking
change: The new parser does not support comments or string
concatenation in JSON files. These features were non-standard
extensions of the old parser but their removal could break code which
was relying on them.
这是我一直通读的json文件的同伦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": ""
}
我将 boost 版本从 1.58.0
升级到 1.65.0
,现在由于评论我收到异常。当我删除评论时,一切都很好。
是我哪里弄错了还是新版boost的bug?
official JSON standard does not define a syntax for comments (here's the reason why).
在每个解析器的基础上实施(或不实施)对注释的支持。这可能是 Boost 曾经为了方便而支持但后来为了合规而删除的东西(我推测,因为我自己不使用 Boost)。
如果 Boost 不再支持评论,您将不得不在解析之前将其删除。为此目的,有很多第 3 方实现。请参阅 Can comments be used in JSON? 以获取建议。
评论不是JSON。
旧的解析器确实有它们,但没有正确支持 unicode。
这是 the release notes for Boost 1.59.0 中的消息:
Property Tree:
- A new JSON parser with full Unicode support.
- Breaking change: The new parser does not support comments or string concatenation in JSON files. These features were non-standard extensions of the old parser but their removal could break code which was relying on them.