我有問題,我嘗試在線搜索,如轉換QList
到JSON,並將其發送到URL,但首先,我沒有發現任何關於json與Qt和C++的serialise QList<Myobject>
。序列化QList <MyObject>到JSON
我沒空QList
:
QList<User> lista;
我的目標是要LISTA JSON。
如何序列化它?我在網上看到QJson
存在,但它是一個外部組件...在Qt 5.9中有一個內部組件?
我有問題,我嘗試在線搜索,如轉換QList
到JSON,並將其發送到URL,但首先,我沒有發現任何關於json與Qt和C++的serialise QList<Myobject>
。序列化QList <MyObject>到JSON
我沒空QList
:
QList<User> lista;
我的目標是要LISTA JSON。
如何序列化它?我在網上看到QJson
存在,但它是一個外部組件...在Qt 5.9中有一個內部組件?
外部compenent
首先,您需要爲對象本身提供QJsonValue
表示形式,然後迭代列表並將其轉換爲數組。使用QJsonDocument
將其轉換爲文本:
// https://github.com/KubaO/stackoverflown/tree/master/questions/json-serialize-44567345
#include <QtCore>
#include <cstdio>
struct User {
QString name;
int age;
QJsonObject toJson() const {
return {{"name", name}, {"age", age}};
}
};
QJsonArray toJson(const QList<User> & list) {
QJsonArray array;
for (auto & user : list)
array.append(user.toJson());
return array;
}
int main() {
QList<User> users{{"John Doe", 43}, {"Mary Doe", 44}};
auto doc = QJsonDocument(toJson(users));
std::printf("%s", doc.toJson().constData());
}
輸出:
[
{
"age": 43,
"name": "John Doe"
},
{
"age": 44,
"name": "Mary Doe"
}
]
我認爲一個簡單的解決方案是將JSON對象創建爲QString。爲此,您可以實施QString User::toJson()
,這會爲您提供JSON有效的字符串。然後你就可以在你的QList迭代在foreach:
QString finalString ="";
foreach(User user, lista) {
finalString += user.toJson();
// Something like that...
}
return finalString;
你有沒有調查[這](http://doc.qt.io/qt-5/json.html)? – NathanOliver
是的,也許不存在一個從QList到Json的直接解決方案,也許我會將Qlist轉換爲QJsonDocument ... beleive –