【发布时间】:2020-06-04 14:21:28
【问题描述】:
我想克隆 json 对象。 为了完成这项工作,我开发了两个功能。一个用于对象,一个用于数组。
克隆 JSON::Object::Ptr 的方法效果很好。 这是代码
Poco::JSON::Object::Ptr CJsonHelper::cloneJson(Poco::JSON::Object::Ptr obj)
{
Poco::JSON::Object::Iterator it;
Poco::JSON::Object::Ptr ptr = new Poco::JSON::Object;
// loop and copy
for(it = obj->begin(); it != obj->end(); it++)
ptr->set(it->first, it->second);
return ptr;
}
克隆 JSON::Array::Ptr 的方法有效,但是当我对包含数组的对象进行字符串化时,出现以下错误:
Can not convert to std::string
这里是克隆无效数组的函数代码
Poco::JSON::Array::Ptr CJsonHelper::cloneJson(Poco::JSON::Array::Ptr obj)
{
Poco::JSON::Array::Ptr copy = new Poco::JSON::Array;
// loop and copy
for (auto item = obj->begin(); item != obj->end(); ++item)
{
copy->add(item);
}
return copy;
}
传递给函数的对象是预先从失败中解析出来的并且是有效的
{
"items" : [
{
"name" : "object0",
"position" : {
"x" : "700.0",
"y" : "0.0",
"z" : "250.0"
}
}
]
}
如果我替换了
copy->add(item);
由
copy->add(item->extract<Poco::JSON::Object::Ptr>());
它运行良好,但仅在这种情况下,我需要它是通用的。
我确定我错过了一些我没有找到的东西,因为它在克隆对象方法中运行良好。
【问题讨论】:
标签: c++ json poco-libraries