无法使用 C++ Poco 库正确克隆 JSON 数组
Unable to clone a JSON Array properly using C++ Poco library
我想克隆 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>());
它运行良好,但仅在这种情况下,我需要它是通用的。
我确定我错过了一些我没有找到的东西,因为它在克隆对象方法中运行良好。
我终于找到了我的错误!
我错过了一个 * 来通过自动迭代器
copy->add(item);
变成
copy->add(*item);
我post更新的功能如果它可以帮助某人
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;
}
我想克隆 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>());
它运行良好,但仅在这种情况下,我需要它是通用的。
我确定我错过了一些我没有找到的东西,因为它在克隆对象方法中运行良好。
我终于找到了我的错误!
我错过了一个 * 来通过自动迭代器
copy->add(item);
变成
copy->add(*item);
我post更新的功能如果它可以帮助某人
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;
}