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.