rapidjson:如何将 Document 对象拆分为较小的 Document 对象?

rapidjson: How can I split a Document object to a smaller Document object?

我正在开发一个 C++ 项目,我使用 rapidjson 进行 JSON 解析。我有这个 JSON:

{
  "a": "valA",
  "b": {
    "ba": "valBA",
    "bb": "valBB",
    "bc": "valBC"
  },
  "c": "valC"
}

我解析了整个 JSON 并得到了一个包含所有值的 Document 对象。我想要的是以某种方式处理这个 Document 对象并仅提取 b 部分。好像我在解析这个 JSON:

{
  "b": {
    "ba": "valBA",
    "bb": "valBB",
    "bc": "valBC"
  }
}

我想过自己解析 Document 对象,但我想知道是否有 easier/faster 方法可以做到这一点。有什么想法吗?

"b" 元素可以这样提取并放入新文档中:

#include <iostream>
#include <rapidjson/document.h>
#include <rapidjson/stringbuffer.h>
#include <rapidjson/writer.h>

using namespace rapidjson;

int main(void)
{
    const char* json = "{\"a\": \"valA\",\"b\": {\"ba\": \"valBA\",\"bb\": \"valBB\",\"bc\": \"valBC\"},\"c\": \"valC\"}";

    Document d;
    d.Parse<0>(json);

    Value& data = d["b"];

    Document d2;
    d2.SetObject();
    d2.AddMember("b", data, d2.GetAllocator());

    rapidjson::StringBuffer buffer;
    rapidjson::Writer<rapidjson::StringBuffer> writer(buffer);
    d2.Accept(writer);

    std::cout << buffer.GetString() << std::endl;

    return 0;
}

输出:

{"b":{"ba":"valBA","bb":"valBB","bc":"valBC"}}