C++ Qjson处理返回的OJBECT数组
我使用Qjson解析从web服务返回的json对象。我一直在处理一系列复杂的项目 在第一级,web服务返回一个由“error”、“id”和“return”组成的映射。如果没有错误,我可以使用C++ Qjson处理返回的OJBECT数组,c++,json,qt,qjson,C++,Json,Qt,Qjson,我使用Qjson解析从web服务返回的json对象。我一直在处理一系列复杂的项目 在第一级,web服务返回一个由“error”、“id”和“return”组成的映射。如果没有错误,我可以使用 nestedMap = m_jsonObject["result"].toMap(); group = new Group(); group->Caption = nestedMap["Caption"].toString(); group->CollectionCount = nest
nestedMap = m_jsonObject["result"].toMap();
group = new Group();
group->Caption = nestedMap["Caption"].toString();
group->CollectionCount = nestedMap["CollectionCount"].toInt();
我甚至可以使用
group->ModifiedOn = nestedMap["ModifiedOn"].toMap()["Value"].toDateTime();
我有一个叫做“元素”的对象,它由29个键值对组成。web服务正在返回这些“元素”的数组,我无法找到正确的解析方法。在头文件中,元素的容器定义为
QList<GroupElement> Elements;
导致编译器在((MyClass*)this)->MyClass::group->group::Elements=QVariant::toMap()const()中抛出一个错误“error:no match'operator='
我想学习将此元素放入类中的正确语法。更新:我编写了另一个函数来将QVariantMap对象转换为 第一: group->Elements对象已更改为
class ParentClass{
QList<SharedDataPointer<Address> > Elements;
other class memmbers...
};
您的问题似乎是一个JSON解析问题。我建议你参考曼尼的一篇关于json解析的教程。例如,我的问题是针对Qjson解析器的。我希望我能继续使用这个解析器。
class ParentClass{
QList<SharedDataPointer<Address> > Elements;
other class memmbers...
};
QSharedDataPointer<Address>
API_1_6::mapToAddress(QVariantMap o)
{
QSharedDataPointer<Address> address (new Address());
address-> FirstName = o["FirstName"].toString();
address->LastName = o["LastName"].toString();
address->CompanyName = o["CompanyName"].toString();
address->Street = o["Street"].toString();
address->Street2 = o["Street2"].toString();
address->City = o["City"].toString();
address->Zip = o["Zip"].toString();
address-> State = o["State"].toString();
address->Country = o["Country"].toString();
address->Phone = o["Phone"].toString();
address->Phone2 = o["Phone2"].toString();
address-> Fax = o["Fax"].toString();
address-> Url = o["Url"].toString();
address->Email = o["Email"].toString();
address->Other = o["Other"].toString();
return address;
}
// get the list of the elements
elementsList = nestedMap["Elements"].toList();
// Add the element, converted to the new type, to the Elements object of the'parent' class
foreach(QVariant qElement, elementsList){
group-> Elements.append(mapToAddress(qElement))
}