是否允许在JSON文件中为boost read_json添加注释?

时间:2017-09-13 00:46:08

标签: c++ json boost boost-propertytree

这是我用来阅读boost::property_tree::json_parser::read_json

的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,现在我因为评论而收到异常。当我删除评论时,一切都很好。

我在某处犯了错误,或者是新版本的增强版中的错误?

2 个答案:

答案 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?