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"}}
我正在开发一个 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"}}