我正在尝试创建Poco::JSON::Object
的深层副本。
内部Poco::JSON::Object
使用指针和复制构造函数只复制那些指针。有一个聪明的解决方案如何使用Poco框架复制此结构?
答案 0 :(得分:3)
我不知道任何通用解决方案,但对于性能不重要的小型JSON对象,以下功能可以很好地完成工作:
Poco::JSON::Object::Ptr cloneJsonObject(Poco::JSON::Object::Ptr obj) {
if (obj) {
std::stringstream streamedObj;
obj->stringify(streamedObj);
Poco::JSON::Parser parser;
return parser.parse(streamedObj).extract<Poco::JSON::Object::Ptr>();
} else {
return nullptr;
}
}
答案 1 :(得分:0)
无法找到好的文档。所以这是另一种复制方式。您可以检查密钥和值是否需要进一步更深层次的复制,如使用c_str()。对我来说这很好。
Poco::JSON::Object::Ptr cloneJsonObject(Poco::JSON::Object::Ptr obj)
{
Poco::JSON::Object::Iterator it;
Poco::JSON::Object *ptr = new Poco::JSON::Object;
// loop and copy
for(it = obj->begin(); it != obj->end(); it++)
ptr->set(it->first, it->second);
return ptr;
}