首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Rapidjson值转换为Rapidjson文档

从Rapidjson值转换为Rapidjson文档
EN

Stack Overflow用户
提问于 2017-07-03 08:46:16
回答 1查看 4.7K关注 0票数 2

根据本教程

每个JSON值存储在一个名为Value的类型中。表示DOM的文档包含DOM树的根值。

如果是这样,应该可以从文档中生成一个子文档。

如果我的JSON是:

代码语言:javascript
复制
{
    "mydict": {
        "inner dict": {
            "val": 1,
            "val2": 2
        }
    }
}

我希望能够从内部字典中创建一个文档。

(然后按照指示执行在FAQ中用于如何将文档节点插入到另一个文档中?)

EN

回答 1

Stack Overflow用户

发布于 2018-05-20 00:33:48

鉴于原始文件包括:

代码语言:javascript
复制
{
    "mydict": {
        "inner dict": {
            "val": 1,
            "val2": 2
        }
    }
}

您可以复制子文档:

代码语言:javascript
复制
const char json[] = "{\"mydict\": {\"inner dict\": {\"val\": 1, \"val2\": 2}}}";
Document doc, sub; // Null
doc.Parse(json);
sub.CopyFrom(doc["mydict"], doc.GetAllocator());

您还可以将子文档与另一个文件交换:

代码语言:javascript
复制
const char json[] = "{\"mydict\": {\"inner dict\": {\"val\": 1, \"val2\": 2}}}";
Document doc, sub; // Null
doc.Parse(json);
sub.Swap(doc["mydict"]);

通过一些验证:

代码语言:javascript
复制
const char json[] = "{\"mydict\": {\"inner dict\": {\"val\": 1, \"val2\": 2}}}";
Document doc, sub; // Null
doc.Parse(json);
if (doc.IsObject()) {
    auto it = doc.FindMember("mydict");
    if (it != doc.MemberEnd() && it->value.IsObject()) {
        sub.Swap(it->value);
    }
}

每一个结果都将导致sub,其中包括:

代码语言:javascript
复制
{
    "inner dict": {
        "val": 1,
        "val2": 2
    }
}

使用CopyFrom()方法,doc将包含:

代码语言:javascript
复制
{
    "mydict": {
        "inner dict": {
            "val": 1,
            "val2": 2
        }
    }
}

Swap()

代码语言:javascript
复制
{
    "mydict": null
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44881239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档