使用 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::ifstream
和 rapidjson::IStreamWrapper
来获得我的 Document
就像上面的例子一样,还有其他尽可能简单的替代方法吗?
我的 2. 问题是:(如果我可以评论上面的 post,这个问题会容易得多)
R
在 std::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
。根据文档,FileReadStream
比 IStreamWrapper
.
快得多
R
表示它是一个 raw string literal. Without it, the backslashes are interpreted as the start of escape sequences,您必须这样写才能使其正确:
"C:\Test\Test.json"
或者您可以使用正斜杠:
"C:/Test/Test.json"
所以我刚刚开始熟悉 rapidjson.h
,但我找不到这段解析 *.json
文件的基本示例代码。
我找到了官方 [turorial][1]。 但是在这里他们解析存储在 C 字符串中的 json 。我知道这个字符串应该是什么样子,但我懒得制作一个自定义解析器来将我的文件转换成这个字符串。我的意思是我有点希望 rapidjson 应该为我做到这一点。如有不妥请指正
这里是我找到的最接近我需要的东西
因此我真的很惊讶我不能只做这样的事情(*.json
文件与我的程序在同一个文件夹中):
rapidjson::Document d;
d.Parse("myJson.json");
我的第一个问题是:
我是否必须使用 std::ifstream
和 rapidjson::IStreamWrapper
来获得我的 Document
就像上面的例子一样,还有其他尽可能简单的替代方法吗?
R
在 std::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
。根据文档,FileReadStream
比 IStreamWrapper
.
R
表示它是一个 raw string literal. Without it, the backslashes are interpreted as the start of escape sequences,您必须这样写才能使其正确:
"C:\Test\Test.json"
或者您可以使用正斜杠:
"C:/Test/Test.json"