rapidjson pretty print 使用 JSON 字符串作为作者的输入
rapidjson pretty print using JSON string as input to the writer
在 rapidjson documentation 之后,我能够生成漂亮的 JSON 输出,以逐个键的方式编写,例如:
rapidjson::StringBuffer s;
rapidjson::PrettyWriter<rapidjson::StringBuffer> writer(s);
writer.StartObject();
writer.Key("hello");
writer.String("world");
writer.EndObject();
std::string result = s.GetString();
但是,我想做同样的事情,但是使用 JSON 字符串(即 std::string
对象,其内容是有效的 JSON)来提供给作者,而不是调用 Key()
、String()
等等。
查看 PrettyWriter
API 我没有看到任何以这种方式传递 JSON 字符串的方法。另一种方法是将解析后的 JSON 字符串作为 rapidjson::Document
对象传递,但我还没有发现这种可能性。
请问您知道如何做到这一点吗?
这是来自他们的文档:
// rapidjson/example/simpledom/simpledom.cpp`
#include "rapidjson/document.h"
#include "rapidjson/writer.h"
#include "rapidjson/stringbuffer.h"
#include <iostream>
using namespace rapidjson;
int main() {
// 1. Parse a JSON string into DOM.
const char* json = "{\"project\":\"rapidjson\",\"stars\":10}";
Document d;
d.Parse(json);
// 2. Modify it by DOM.
Value& s = d["stars"];
s.SetInt(s.GetInt() + 1);
// 3. Stringify the DOM
StringBuffer buffer;
Writer<StringBuffer> writer(buffer);
d.Accept(writer);
// Output {"project":"rapidjson","stars":11}
std::cout << buffer.GetString() << std::endl;
return 0;
}
我假设你需要#3?
在 rapidjson documentation 之后,我能够生成漂亮的 JSON 输出,以逐个键的方式编写,例如:
rapidjson::StringBuffer s;
rapidjson::PrettyWriter<rapidjson::StringBuffer> writer(s);
writer.StartObject();
writer.Key("hello");
writer.String("world");
writer.EndObject();
std::string result = s.GetString();
但是,我想做同样的事情,但是使用 JSON 字符串(即 std::string
对象,其内容是有效的 JSON)来提供给作者,而不是调用 Key()
、String()
等等。
查看 PrettyWriter
API 我没有看到任何以这种方式传递 JSON 字符串的方法。另一种方法是将解析后的 JSON 字符串作为 rapidjson::Document
对象传递,但我还没有发现这种可能性。
请问您知道如何做到这一点吗?
这是来自他们的文档:
// rapidjson/example/simpledom/simpledom.cpp`
#include "rapidjson/document.h"
#include "rapidjson/writer.h"
#include "rapidjson/stringbuffer.h"
#include <iostream>
using namespace rapidjson;
int main() {
// 1. Parse a JSON string into DOM.
const char* json = "{\"project\":\"rapidjson\",\"stars\":10}";
Document d;
d.Parse(json);
// 2. Modify it by DOM.
Value& s = d["stars"];
s.SetInt(s.GetInt() + 1);
// 3. Stringify the DOM
StringBuffer buffer;
Writer<StringBuffer> writer(buffer);
d.Accept(writer);
// Output {"project":"rapidjson","stars":11}
std::cout << buffer.GetString() << std::endl;
return 0;
}
我假设你需要#3?