【问题标题】:Does Boost Property Tree have methods for defining rules for the data to be parsed?Boost Property Tree 是否有为要解析的数据定义规则的方法?
【发布时间】:2017-10-28 12:49:15
【问题描述】:

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

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

  • 不允许无法识别的键。
  • 根据需要或可选指定键。
  • 指定键的期望值类型(null、bool、int、float、array、dictionary)。

到目前为止,我找到了this previous question,它揭示了如何将一些 JSON 键值对转换为数据结构,但它没有回答上面列出的任何功能是否可行。

【问题讨论】:

  • "Boost 属性树库似乎是 JSON 解析库的最佳选择。" 为什么?为什么人们坚持使用属性树库作为JSON解析器? RapidJSON 真的那么难使用吗?
  • 感谢@NicolBolas 回应我的确切想法。我已经重复了一百万次了。

标签: c++ json boost boost-propertytree


【解决方案1】:

不支持指定的功能。

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

哦,不直接支持数组:准备好丑陋的组合。

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

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

【讨论】:

    【解决方案2】:

    由于缺少类型(正如 sehe 指出的那样),我很快就放弃了属性树。

    为了进一步接受 sehe 的建议,如果您正在处理 JSON,我会推荐一个用户友好的库,例如 nlohmann's library。它相当快速和直观。

    还有 RapidJSON,它专注于内存分配等的每一点,影响可用性,但在(它自己的)tests 中表现最好。在转到 nlohmann 之前,我在处理单项数组时遇到了困难。

    【讨论】:

      猜你喜欢
      • 2016-07-16
      • 1970-01-01
      • 2021-07-16
      • 1970-01-01
      • 1970-01-01
      • 2023-01-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多