Boost属性树是否有方法来定义要解析的数据的规则?

时间:2017-05-27 21:16:00

标签: c++ json boost boost-propertytree

我有一个项目将使用单个JSON文件来描述其所包含的目录的内部内容。 Boost属性树库似乎是JSON解析库的最佳选择。但是,这个JSON文件(和许多其他文件一样)应该有一个非常特殊的布局,到目前为止我还没有找到一种在代码中表达规则的好方法。

Boost属性树库是否有允许用户执行以下任何操作的方法?

  • 禁止无法识别的密钥。
  • 根据需要或选择指定密钥。
  • 指定键的预期值类型(null,bool,int,float,array,dictionary)。

到目前为止,我发现this previous question可以解释如何将一些JSON键值对转换为数据结构,但它无法回答上面列出的任何功能是否可行。

2 个答案:

答案 0 :(得分:4)

不支持指定的任何功能。

更糟糕的是,Property Tree甚至不支持JSON数据类型。在JSON方面,无论如何,一切都将是字符串。

哦,阵列没有直接支持:为丑陋的kludge做准备。

所有这些都在20行左右的文档中解释了属性树的JSON后端。

  

由于这些限制,请聪明并选择JSON库来构建您的需求。

答案 1 :(得分:1)

由于缺乏类型,物业树没多久让我放弃(正如所指出的那样)。

为了进一步考虑sehe的建议,如果你正在处理JSON,我会建议使用像nlohmann's library这样的用户友好的库。它相当快速和直观。

还有RapidJSON,它会影响所有内存分配等,影响可用性,但是(它自己的)tests中表现最佳。在搬到nlohmann之前,我遇到了处理单项数组的困难。