当前位置: 首页 > wzjs >正文

上海高端网站开发公司郑州app制作公司

上海高端网站开发公司,郑州app制作公司,律师事务所网站建设策划方案,国外简约企业网站文章目录 一、构建和解析单个JSON对象二、JSON对象中嵌套多个JSON对象三、JSON对象中组建多个数组对象四、构建和解析数组对象 一、构建和解析单个JSON对象 1.1 JSON对象的构建 使用key-value形式生成JSON对象 #include <QJsonObject> #include <QJsonDocument> …

文章目录

    • 一、构建和解析单个JSON对象
    • 二、JSON对象中嵌套多个JSON对象
    • 三、JSON对象中组建多个数组对象
    • 四、构建和解析数组对象

一、构建和解析单个JSON对象

1.1 JSON对象的构建
使用key-value形式生成JSON对象

#include <QJsonObject>
#include <QJsonDocument>
#include <QDebug>int main() {// 创建 JSON 对象QJsonObject jsonObj;jsonObj["name"] = "张三";jsonObj["age"] = 28;jsonObj["isStudent"] = false;// 转为 JSON 字符串QJsonDocument doc(jsonObj);QString strJson(doc.toJson(QJsonDocument::Compact)); // 或 Indented// 输出 JSON 字符串qDebug() << strJson;return 0;
}

输出结果:

{"name":"张三","age":28,"isStudent":false}

使用insert函数生成JSON对象

#include <QJsonObject>
#include <QJsonDocument>
#include <QDebug>int main()
{// 创建 JSON 对象QJsonObject jsonObj;jsonObj.insert("name", "李四");jsonObj.insert("age", 30);jsonObj.insert("isStudent", false);// 转为 JSON 字符串QJsonDocument doc(jsonObj);QString strJson(doc.toJson(QJsonDocument::Indented)); // 或 Indented// 输出 JSON 字符串qDebug() << strJson;return 0;
}

输出结果:

{"name":"李四","age":30,"isStudent":false}

1.2 JSON对象的解析

#include <QJsonObject>
#include <QJsonDocument>
#include <QDebug>int main()
{QString jsonString = R"({"name":"张三","age":28,"isStudent":false})";QJsonParseError parseError;QJsonDocument doc = QJsonDocument::fromJson(jsonString.toUtf8(), &parseError);if (parseError.error != QJsonParseError::NoError) {qDebug() << "解析错误:" << parseError.errorString();return -1;}if (!doc.isObject()) {qDebug() << "JSON 不是对象类型";return -1;}QJsonObject obj = doc.object();// 判断并提取 nameif (obj.contains("name") && obj["name"].isString()) {QString name = obj["name"].toString();qDebug() << "姓名:" << name;} else {qDebug() << "字段 'name' 缺失或类型错误";}// 判断并提取 ageif (obj.contains("age") && obj["age"].isDouble()) {int age = obj["age"].toInt();qDebug() << "年龄:" << age;} else {qDebug() << "字段 'age' 缺失或类型错误";}// 判断并提取 isStudentif (obj.contains("isStudent") && obj["isStudent"].isBool()) {bool isStudent = obj["isStudent"].toBool();qDebug() << "是否学生:" << isStudent;} else {qDebug() << "字段 'isStudent' 缺失或类型错误";}return 0;
}

输出结果:
在这里插入图片描述

二、JSON对象中嵌套多个JSON对象

2.1 构建和解析包含多个子对象的JSON 对象
构建JSON对象:

#include <QJsonObject>
#include <QJsonDocument>
#include <QDebug>int main() {// 创建第一个子对象(user1)QJsonObject user1;user1.insert("name", "张三");user1.insert("age", 28);// 创建第二个子对象(user2)QJsonObject user2;user2.insert("name", "李四");user2.insert("age", 30);// 创建顶层 JSON 对象QJsonObject root;root.insert("user1", user1);root.insert("user2", user2);// 将顶层对象序列化为字符串QJsonDocument doc(root);QString jsonStr = doc.toJson(QJsonDocument::Indented);qDebug() << jsonStr;return 0;
}

输出结果:

{"user1": {"name": "张三","age": 28},"user2": {"name": "李四","age": 30}
}

解析JSON对象:

#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonParseError>
#include <QDebug>int main() {QString jsonString = R"({"user1": { "name": "张三", "age": 28 },"user2": { "name": "李四", "age": 30 }})";// 解析 JSON 字符串QJsonParseError err;QJsonDocument doc = QJsonDocument::fromJson(jsonString.toUtf8(), &err);if (err.error != QJsonParseError::NoError) {qDebug() << "解析错误:" << err.errorString();return -1;}if (!doc.isObject()) {qDebug() << "顶层不是 JSON 对象";return -1;}QJsonObject rootObj = doc.object();// 遍历 user1 和 user2for (const QString& key : rootObj.keys()) {QJsonValue val = rootObj.value(key);if (!val.isObject()) {qDebug() << key << "不是 JSON 对象";continue;}QJsonObject userObj = val.toObject();QString name = userObj.contains("name") && userObj["name"].isString()? userObj["name"].toString() : "未知";int age = userObj.contains("age") && userObj["age"].isDouble()? userObj["age"].toInt() : -1;qDebug() << key << ": 姓名 =" << name << ", 年龄 =" << age;}return 0;
}

输出结果:
在这里插入图片描述
2.2 子对象中包含JSON对象
构建JSON对象:

#include <QJsonDocument>
#include <QJsonObject>
#include <QDebug>int main() {// 构建 address 对象 for user1QJsonObject address1;address1.insert("city", "北京");address1.insert("zip", "100000");// 构建 user1 对象QJsonObject user1;user1.insert("name", "张三");user1.insert("age", 28);user1.insert("address", address1);// 构建 address 对象 for user2QJsonObject address2;address2.insert("city", "上海");address2.insert("zip", "200000");// 构建 user2 对象QJsonObject user2;user2.insert("name", "李四");user2.insert("age", 30);user2.insert("address", address2);// 构建根对象QJsonObject root;root.insert("user1", user1);root.insert("user2", user2);// 转为字符串QJsonDocument doc(root);qDebug().noquote() << doc.toJson(QJsonDocument::Indented);return 0;
}

输出结果:

{"user1": {"name": "张三","age": 28,"address": {"city": "北京","zip": "100000"}},"user2": {"name": "李四","age": 30,"address": {"city": "上海","zip": "200000"}}
}

解析JSON对象:

#include <QJsonDocument>
#include <QJsonObject>
#include <QDebug>int main() {QJsonDocument doc(root);QJsonObject rootObj = doc.object();for (const QString& key : rootObj.keys()) {QJsonObject userObj = rootObj.value(key).toObject();QString name = userObj.value("name").toString();int age = userObj.value("age").toInt();if (userObj.contains("address") && userObj["address"].isObject()) {QJsonObject addr = userObj["address"].toObject();QString city = addr.value("city").toString();QString zip = addr.value("zip").toString();qDebug() << key << ": 姓名 =" << name << ", 年龄 =" << age<< ", 城市 =" << city << ", 邮编 =" << zip;} else {qDebug() << key << ": 姓名 =" << name << ", 年龄 =" << age << "(无地址信息)";}}return 0;
}

输出结果:
在这里插入图片描述

三、JSON对象中组建多个数组对象

构建对象:

#include <QJsonArray>
#include <QJsonObject>
#include <QJsonDocument>
#include <QDebug>int main() {// 学生数组QJsonArray studentArray;QJsonObject student1;student1.insert("name", "张三");student1.insert("age", 18);studentArray.append(student1);QJsonObject student2;student2.insert("name", "李四");student2.insert("age", 19);studentArray.append(student2);// 教师数组QJsonArray teacherArray;QJsonObject teacher1;teacher1.insert("name", "王老师");teacher1.insert("subject", "数学");teacherArray.append(teacher1);QJsonObject teacher2;teacher2.insert("name", "赵老师");teacher2.insert("subject", "英语");teacherArray.append(teacher2);// 构建根对象QJsonObject root;root.insert("students", studentArray);root.insert("teachers", teacherArray);// 输出 JSONQJsonDocument doc(root);qDebug().noquote() << doc.toJson(QJsonDocument::Indented);return 0;
}

输出结果:

{"students": [{"name": "张三","age": 18},{"name": "李四","age": 19}],"teachers": [{"name": "王老师","subject": "数学"},{"name": "赵老师","subject": "英语"}]
}

解析对象:

#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>
#include <QJsonValue>
#include <QDebug>int main() {QString jsonString = R"({"students": [{ "name": "张三", "age": 18 },{ "name": "李四", "age": 19 }],"teachers": [{ "name": "王老师", "subject": "数学" },{ "name": "赵老师", "subject": "英语" }]})";QJsonParseError err;QJsonDocument doc = QJsonDocument::fromJson(jsonString.toUtf8(), &err);if (err.error != QJsonParseError::NoError) {qDebug() << "解析失败:" << err.errorString();return -1;}if (!doc.isObject()) {qDebug() << "JSON 顶层不是对象";return -1;}QJsonObject root = doc.object();// 解析 students 数组if (root.contains("students") && root["students"].isArray()) {QJsonArray students = root["students"].toArray();qDebug() << "[学生列表]";for (const QJsonValue& val : students) {if (val.isObject()) {QJsonObject stu = val.toObject();QString name = stu.value("name").toString("未知");int age = stu.value("age").toInt(-1);qDebug() << "姓名:" << name << ", 年龄:" << age;}}}// 解析 teachers 数组if (root.contains("teachers") && root["teachers"].isArray()) {QJsonArray teachers = root["teachers"].toArray();qDebug() << "\n[教师列表]";for (const QJsonValue& val : teachers) {if (val.isObject()) {QJsonObject teacher = val.toObject();QString name = teacher.value("name").toString("未知");QString subject = teacher.value("subject").toString("未知");qDebug() << "姓名:" << name << ", 学科:" << subject;}}}return 0;
}

输出结果:
在这里插入图片描述

四、构建和解析数组对象

生成一个 JSON 数组对象:

#include <QJsonArray>
#include <QJsonObject>
#include <QJsonDocument>
#include <QDebug>int main() {// 创建 JSON 数组QJsonArray jsonArray;// 添加第一个对象QJsonObject obj1;obj1.insert("name", "张三");obj1.insert("age", 18);jsonArray.append(obj1);// 添加第二个对象QJsonObject obj2;obj2.insert("name", "李四");obj2.insert("age", 19);jsonArray.append(obj2);// 序列化为 JSON 字符串(数组作为顶层)QJsonDocument doc(jsonArray);QString jsonStr = doc.toJson(QJsonDocument::Indented);qDebug().noquote() << jsonStr;return 0;
}

输出结果:

[{"name": "张三","age": 18},{"name": "李四","age": 19}
]

解析一个 JSON 数组对象:

#include <QJsonDocument>
#include <QJsonArray>
#include <QJsonObject>
#include <QJsonParseError>
#include <QDebug>int main() {QString jsonString = R"([{ "name": "张三", "age": 18 },{ "name": "李四", "age": 19 }])";// 解析 JSON 字符串QJsonParseError err;QJsonDocument doc = QJsonDocument::fromJson(jsonString.toUtf8(), &err);if (err.error != QJsonParseError::NoError) {qDebug() << "解析失败:" << err.errorString();return -1;}if (!doc.isArray()) {qDebug() << "顶层不是数组";return -1;}QJsonArray array = doc.array();// 遍历数组for (const QJsonValue& val : array) {if (!val.isObject()) continue;QJsonObject obj = val.toObject();QString name = obj.value("name").toString("未知");int age = obj.value("age").toInt(-1);qDebug() << "姓名:" << name << ", 年龄:" << age;}return 0;
}

输出结果:
在这里插入图片描述

http://www.dtcms.com/wzjs/803721.html

相关文章:

  • 搭建平台网站网站页面html静态化
  • 网络营销导向企业网站建设的原则网站备案 取名资讯通不过
  • 虚拟主机怎么发布网站吗市北建筑建网站哪家好
  • 网站收录了怎么做排名国际贸易网站开发
  • 企业网站制作需要多少费用装饰公司品牌排行榜前十名
  • 网站建设早会说什么网站建设费怎么写会计科目
  • 网站制作要多少钱门户网站广告的特点有
  • 西安专业网站排名优化帮别人做网站服务器
  • 网站怎么建设可以发图评论精准营销模型
  • 电商网站开发资金预算收费 WordPress
  • wordpress网站生成app应用域名解析入口
  • 深圳做网站的地方我做百度_上面有手机网站的_为什么还要做手机网站
  • 如何编程制作自己的网站宝安中心医院口腔科
  • 北京做网站的公司排行自学网ps教程新手入门
  • 推荐 南昌网站建设戴尔公司网站设计特色
  • .net网站开发框架铁路网站建设
  • 选择网站的关键词敬老院网站建设方案
  • 网站建设厘金手指排名二二logo免费网站
  • 滑坡毕业设计代做网站厦门网站备案
  • 阿里云建wordpress站天津市建设执业资格注册中心网站
  • 广宁县住房建设局网站有了域名与服务器怎么建网站
  • 青岛注册公司核名在哪个网站做网站app怎么赚钱
  • 网站如何做双语言社区问答网站开发
  • 盐城网站设计wordpress问答插件中文免费版
  • 有没有做盗版电影网站犯罪的网络推广引流是做什么的
  • 设计参考网站推荐wordpress配置虚拟主机
  • 泰兴网站建设开发三室两厅装修
  • 免费手机建站网站wordpress网站登录
  • 邢台移动网站建设index of wordpress
  • 唐山市建设局网站东莞常平限电通知2021