序列化 QList<MyObject> 到 JSON
Serialization QList<MyObject> to JSON
我有问题,我尝试在线搜索,例如将QList
转换为 JSON,并将其发送到 URL,但首先,我没有发现任何关于使用 Qt 和 C++ 将QList<Myobject>
序列化为 json。
我的非空QList
:
QList<User> lista;
我的目标是 Lista 到 JSON。
如何序列化?我在网上看到QJson
存在,但是一个外部补偿......Qt 5.9 中有内部组件吗?
外部补偿
Qt有内部的JSON支持。
首先,您需要为对象本身提供一个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 有效的字符串。然后,您可以使用 foreach 迭代您的 QList:
QString finalString ="";
foreach(User user, lista) {
finalString += user.toJson();
// Something like that...
}
return finalString;
相关文章:
- 在c++中使用nlohmann从类到json的转换
- C++json插入数组
- nlohmann-json将一个数组插入到另一个数组中
- 如何使用curlpp通过POST方法上传文件和json数据
- JSON转换为nlohmann JSON-lib中的结构数组
- NLOHMANN 的 JSON 库将数组转换为结构向量
- 在nlohmann json中,如何将嵌套对象的数组转换为嵌套结构的向量
- EASTL矢量<向量<int>>连续的
- 如何在 nlohmann 的 json 库中获取数组长度?
- UE4 C++ 我无法将 JSON 嵌套值获取到 TArray
- 如何在特定位置追加 json 文件
- 有没有办法让编译器在我放置字符串而不是 nlohmann::json 对象时抛出错误?
- 使用 jsoncpp 解析 json 数组字符串
- 将 FlatBuffer 对象序列化为 JSON,而不使用其架构文件
- 如何在 c++ 非托管代码中反序列化 byte[] 的 json 字符串?
- 使用 cmake 生成 compile_commands.json
- 如何使用 c++ 和提升库生成 json
- 使用 minijson-reader 库读取 JSON 字符串时出现问题
- 使用 Qt 解析 JSON 数组
- 如何使用 picojson.h 在 c++ 中从头开始创建 json 对象