如果不是json,但与它相似,如何使用boost解析?

How to parse using boost if it is not json, but similar to it?

我有一个从 json 文件中读取一些参数的应用程序,但现在文件已更改(这不是我的决定)。该文件看起来很像,但不是 {} 它有 [],所以如果直到现在它看起来像

{
  "A":
  {
    "a":"a",
    "b":"b"
  }
}

现在是这样的:

[
  "A":
  [
    "a":"a",
    "b":"b"
  ]
]

我的应用程序是用 C++ 编写的,所以我使用 boost 来解析 json 文件,但现在我正在寻找一个新的解析器,有没有办法用 boost 来完成?

我已经开始搜索了,但是我也问了这个问题,想着也许有人会比我找到答案更快地帮助我。谢谢

它看起来像 Yet Another YAML/Mustache/JSON/... derivative.

如果没有正式的规范,就很难实际评估需要付出多少努力,但以下是 Boost Spirit 中类似语法的实现列表,具有不同程度的功能完整性:

  • How to parse mustache with Boost.Xpressive correctly? <-- 这可能是您最匹配的演示
  • Parse a substring as JSON using QJsonDocument(最小子集,使用类似这样的东西将输入转换为正确的 JSON,例如?)
  • 一个全功能的 JSON 解析器(有 AST 和转义但没有注释)

玩具JSON解析器实现的应用:

  • replace only some value from json to json
  • How to manipulate leaves of a JSON tree
  • 更多