C++ 如何使用rapidjson(已实现的序列化)将对象序列化为std::string?
如何使用rapidjson将对象序列化为std::string? 我已经实施了C++ 如何使用rapidjson(已实现的序列化)将对象序列化为std::string?,c++,json,C++,Json,如何使用rapidjson将对象序列化为std::string? 我已经实施了 class Person{ public: std::string name; uint64 id; // uint64 is typedef template <typename Writer> void Serialize(Writer& writer) const { writer.StartObject(); writer.
class Person{
public:
std::string name;
uint64 id; // uint64 is typedef
template <typename Writer>
void Serialize(Writer& writer) const {
writer.StartObject();
writer.String("name");
writer.String(name);
writer.String(("id"));
writer.Uint64(id);
writer.EndObject();
}
std::string serialize(){
FileStream s(stdout);
PrettyWriter<FileStream> writer(s);
Serialize(writer);
return ? /// There is a problem
}
}
班级人员{
公众:
std::字符串名;
uint64 id;//uint64是typedef
模板
无效序列化(写入程序和写入程序)常量{
writer.StartObject();
writer.String(“name”);
writer.String(名称);
writer.String((“id”);
writer.Uint64(id);
writer.EndObject();
}
std::string serialize(){
文件流s(标准输出);
漂亮的作家;
连载(作者);
返回?///出现问题
}
}
序列化函数中的问题是返回什么?无。您已将其发送到
stdout
如果不想将输出流式传输到文件,请不要使用FileStream
;使用另一个模板参数来PrettyWriter
,它存储并允许您提取字符串
快速浏览一下文档,您会发现它很有希望。它是GenericStringBuffer的类型别名
请尝试以下操作:
std::string serialize() {
GenericStringBuffer<UTF8<> > buffer;
Writer<GenericStringBuffer<UTF8<> > > writer(buffer);
Serialize(writer);
return buffer.GetString();
}
std::string serialize(){
GenericStringBuffer缓冲区;
写入器(缓冲区);
连载(作者);
返回buffer.GetString();
}
这个问题已经很老了,若你们还在寻找答案,那个么这里就是@Lightness Races in Orbit所建议的答案
class Person{
public:
std::string name;
uint64 id; // uint64 is typedef
template <typename Writer>
void Serialize(Writer& writer) const {
writer.StartObject();
writer.String("name");
writer.String(name);
writer.String(("id"));
writer.Uint64(id);
writer.EndObject();
}
std::string serialize(){
StringBuffer s;
Writer<StringBuffer> writer(s);
Serialize(writer);
return s.GetString();
}
}
班级人员{
公众:
std::字符串名;
uint64 id;//uint64是typedef
模板
无效序列化(写入程序和写入程序)常量{
writer.StartObject();
writer.String(“name”);
writer.String(名称);
writer.String((“id”);
writer.Uint64(id);
writer.EndObject();
}
std::string serialize(){
缓冲带;
撰稿人;
连载(作者);
返回s.GetString();
}
}
您还可以在此处查看示例代码: