Rapidjson漂亮的打印使用JSON字符串作为作者的输入

rapidjson pretty print using JSON string as input to the writer

本文关键字:输入 字符串 漂亮 打印 Rapidjson JSON      更新时间:2023-10-16

Rapidjson文档后,我能够以键键的方式生成一个相当印刷的JSON OUPUT写作,例如:

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?