使用 rapidjson 解析 json 文件的最简单方法是什么?

What is the easiest way to parse a json file using rapidjson?

所以我刚刚开始熟悉 rapidjson.h,但我找不到这段解析 *.json 文件的基本示例代码。

我找到了官方 [turorial][1]。 但是在这里他们解析存储在 C 字符串中的 json 。我知道这个字符串应该是什么样子,但我懒得制作一个自定义解析器来将我的文件转换成这个字符串。我的意思是我有点希望 rapidjson 应该为我做到这一点。如有不妥请指正

这里是我找到的最接近我需要的东西

因此我真的很惊讶我不能只做这样的事情(*.json 文件与我的程序在同一个文件夹中):

rapidjson::Document d;
d.Parse("myJson.json");

我的第一个问题是:

我是否必须使用 std::ifstreamrapidjson::IStreamWrapper 来获得我的 Document 就像上面的例子一样,还有其他尽可能简单的替代方法吗?

我的 2. 问题是:(如果我可以评论上面的 post,这个问题会容易得多)

Rstd::ifstream ifs { R"(C:\Test\Test.json)" }; 中的含义是什么以及如何 将 C:\Test\Test.json 字符串更改为 const char* 变量?

因为这不起作用。

const char* str = "C:\Test\Test.json";
std::ifstream ifs { R"(str)" }; //error
std::ifstream ifs { R(str) }; //error
std::ifstream ifs{ (str) }; //ok but I don't like it
[1]: https://rapidjson.org/md_doc_tutorial.html

您可以使用 FileReadStream and ParseStream 代替 IStreamWrapper。根据文档,FileReadStreamIStreamWrapper.

快得多

R 表示它是一个 raw string literal. Without it, the backslashes are interpreted as the start of escape sequences,您必须这样写才能使其正确:

"C:\Test\Test.json"

或者您可以使用正斜杠:

"C:/Test/Test.json"