使用 rapidjson 直接在文件中保存 json
Save json with rapidjson directly on file
我是Java程序员,我正在为我的个人项目学习解析器比特币核心C++,我的解析器将文件dat bitcoin上的信息转换为json文件。
现在我的问题是当我在 StringBuffer 上使用 Writer 使用 rapidjson 创建大 json 时
这是我的DAO的一个简单的例子
void DAOJson::serializationWithRapidJson(Person &person) {
rapidjson::StringBuffer s;
rapidjson::Writer<rapidjson::StringBuffer> writer(s);
person.toRapidJson(writer);
unique_ptr<string> json(new string(s.GetString()));
cout << *json;
ofstream stream(DIR_HOME + "dump_rapidJson_test.json");
stream << *json;
json.reset();
stream.close();
}
我的问题是
是否可以使用 rapidjson 在文件而不是字符串上创建 json? 因为我必须保存我的记忆
我想要的代码示例
rapidjson::Writer<rapidjson::FileWriter> writer(s);
是的,您确实有OStreamWrapper
:
#include <rapidjson/ostreamwrapper.h>
#include <rapidjson/writer.h>
#include <fstream>
void f(auto person)
{
std::ofstream stream(DIR_HOME + "dump_rapidJson_test.json");
rapidjson::OStreamWrapper osw(stream);
rapidjson::Writer<rapidjson::OStreamWrapper> writer(osw);
person.toRapidJson(writer);
}
如果我是你,我会定义一个运算符:
std::ofstream operator<<(std::ofstream& os, Person const& person)
{
rapidjson::OStreamWrapper osw(os);
rapidjson::Writer<rapidjson::OStreamWrapper> writer(osw);
person.toRapidJson(writer);
return os;
}
// usage (e.g.):
std::ofstream out("tmp");
Person alice, bob;
out << "Alice: " << alice << "nBob: " << bob;
你还有一个与 C 兼容的变体:rapidjson::FileWriteStream
,但它无论如何都需要一个缓冲区。
#include <rapidjson/filewritestream.h>
#include <rapidjson/writer.h>
#include <cstdio>
void f(auto person)
{
// output file (a la C)
FILE* fp = std::fopen("output.json", "wb"); // non-Windows use "w"
// writer to file (through a provided buffer)
char writeBuffer[65536];
rapidjson::FileWriteStream os(fp, writeBuffer, sizeof(writeBuffer));
rapidjson::Writer<rapidjson::FileWriteStream> writer(os);
// write
person.toRapidJson(writer);
std::fclose(fp);
}
相关文章:
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 在c++中使用nlohmann从类到json的转换
- 如何在选项卡视图Qt中设置一个新项目,并保存以前的项目
- 如何使用OpenCV将RBG图像转换为HSV,并将H、S和V值保存为C++中的3个独立图像
- C++json插入数组
- 将字符指针十六进制转换为字符串并保存在文本文件C++中
- nlohmann-json将一个数组插入到另一个数组中
- 在没有定义返回类型的函数中返回布尔值,并将结果保存在无错误的char编译中-为什么
- EvtExportLogneneneba API正在将远程计算机的事件日志保存到远程PC本身.如何将其保存到主机
- 保存json文件后如何返回文件路径
- 从 JSON 读取和保存数据
- 使用 rapidjson 直接在文件中保存 json
- 使用Nlohmann JSON将JSON数据保存在文件中时获取空值
- 如何以json格式保存弹性搜索的数据
- 将枚举类变量保存到JSON中
- 将JSON直接保存到数据库QT
- 当我用口音保存JSON时,我的文字错误(QT)
- 如何保存HTTP的JSON响应在C 中获取.json文件
- 当在数据库上保存json格式的字符串时,我是否也应该保存值的类型以便稍后转换回来
- 在 JSON - AJAX 发布请求后保存 html 页面