gpt4 book ai didi

c++ - Rapidjson 将一个文档对象的键值分配给另一个文档对象

转载 作者:行者123 更新时间:2023-11-30 05:02:52 25 4
gpt4 key购买 nike

我有两个由 Rapidjson 库解析的 json 字符串。

JSON 1:

{
"jKey1":{
"jVal1Key1":{
"mystr":["str1","str2"]
},
"jVal2Key2":["data1","data2"]
},
"jKey2":"Title"
}

JSON 2:

{
"jVal1Key1":{
"mystr":["str1","str2"]
}
}

我只想将 Json 1 的“jVal1Key1”替换为 的“jVal1Key1Json 2

所以我尝试了下面的代码。

Document doc1;
doc1.Parse<0>(json1.c_str()).HasParseError();
doc1.Parse(json1.c_str());

Document doc2;
doc2.Parse<0>(json2.c_str()).HasParseError();
doc2.Parse(json2.c_str());

if(doc1.HasMember("jKey1"))
{
if(doc1["jKey1"].HasMember("jVal1Key1"))
{
if(doc2.HasMember("jVal1Key1"))
{
doc1["jKey1"]["jVal1Key1"] = doc2["jVal1Key1"]; // I failed here
}
}
}

在我的程序中,下面一行,

doc1["jKey1"]["jVal1Key1"] = doc2["jVal1Key1"];  // I failed here

编译成功。但它在运行时失败了。我的问题是,如何将“doc2”的键“jVal1Key1”的值复制到“doc1”。

最佳答案

根据RapidJson Documentation ,您可以使用 CopyFrom 对 DOM 树进行深度复制。另一种选择是将值与 Swap 交换如果速度有问题,哪个更快:

示例代码:

doc1["jKey1"]["jVal1Key1"].CopyFrom(doc2["jVal1Key1"], doc2.GetAllocator());

我认为您现在正在做的是将值从 doc2 移动到 doc1。看Move Semantics部分了解更多信息,看看这是否会导致您看到的错误。

关于c++ - Rapidjson 将一个文档对象的键值分配给另一个文档对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49645143/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com