无法使用 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;
}