rapidjson pretty print使用JSON字符串作为编写器的输入

时间:2016-11-27 19:56:00

标签: c++ json rapidjson

关注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字符串(即内容为有效JSON的std::string对象)来提供编写器,而不是调用Key(),{{1等等。

期待PrettyWriter API我没有看到以这种方式传递JSON字符串的任何方法。另一种方法是将解析后的JSON字符串作为String()对象传递,但我还没有找到这种可能性。

关于如何做到这一点的任何想法,拜托?

1 个答案:

答案 0 :(得分:5)

这是他们的文件:

// 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?