无法使用 Poco 库正确克隆 JSON 数组C++
Unable to clone a JSON Array properly using C++ Poco library
我想克隆json对象。 为了完成这项工作,我开发了两个功能。一个用于对象,一个用于数组。
克隆 JSON::Object::P tr 的方法效果很好。 这是代码
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::P tr 的方法有效,但是当我字符串化包含数组的对象时,出现以下错误:
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;
}
传递给函数的对象是从 faile 解析而来的,并且有效
{
"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);
如果可以帮助某人,我会发布更新的功能
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;
}
相关文章:
- 使用 jsoncpp 解析 json 数组字符串
- 使用 Qt 解析 JSON 数组
- 在 C++ 中访问 JSON 数组值
- 无法使用 Poco 库正确克隆 JSON 数组C++
- 获取嵌套的 JSON 数组和矩阵C++
- 如何使用基于范围的for循环迭代Rapidjson文档(它本身就是一个JSON数组)
- JSONCPP 只用一个元素写入 JSON 数组
- 如何打印 JSON 数组
- 在C++中使用 RapidJSON 访问 JSON 数组的字段
- 从QT的Web服务中解析未命名的JSON数组
- 使用 boost 读取复杂的 JSON 数组
- 创建 Qstring 的 Json 数组
- 在 qt c++ 中获取 Json 数组中 Qstring 的输出
- 如何使用 QT 创建 JSON 数组
- 如何将JSON数组存储在Arduino程序中
- C 返回函数的函数返回JSON数组通过Nlohmann Json.hpp
- 使用Boost C 创建JSON数组
- 从 JSON 数组获取天气
- 使用JSONCPP创建空的JSON数组
- C++ 将请求发送到 Web 服务器上的 API,然后接收 JSON 数组响应