2
我试图创建Poco::JSON::Object
的深拷贝。Poco :: JSON的深拷贝::对象
内部Poco::JSON::Object
使用指针和复制构造函数只是复制这些指针。有没有一个聪明的解决方案如何使用Poco框架来复制这个结构?
我试图创建Poco::JSON::Object
的深拷贝。Poco :: JSON的深拷贝::对象
内部Poco::JSON::Object
使用指针和复制构造函数只是复制这些指针。有没有一个聪明的解决方案如何使用Poco框架来复制这个结构?
我不知道任何通用的解决方案,但对于小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;
}
}
找不到良好的文档。所以这里是另一种复制方式。您可以检查键和值是否需要使用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;
}
的'makeStruct'功能似乎做一个深拷贝,尽管这给你留下一个'波科::动态:: Struct'和我没有看到任何盆栽功能转换回'波科:: JSON :: Object',尽管你可以在'makeStruct'的源代码中写入一个 –