【发布时间】:2018-04-04 07:27:13
【问题描述】:
我有两个由 Rapidjson 库解析的 json 字符串。
Json 1:
{
"jKey1":{
"jVal1Key1":{
"mystr":["str1","str2"]
},
"jVal2Key2":["data1","data2"]
},
"jKey2":"Title"
}
Json 2:
{
"jVal1Key1":{
"mystr":["str1","str2"]
}
}
我只想将 Json 1 的“jVal1Key1”替换为 的“jVal1Key1” Json 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'。
【问题讨论】:
-
能否添加运行时遇到的错误?
-
我通过 std::runtime_error& 抓住了它。但它没有抛出任何错误。