Qt平台下使用QJson构建JSON字符串

简介: Qt平台下使用QJson构建JSON字符串

640.jpg

前言

上两篇文章介绍了使用cJSON库解析和构建JSON字符串Qt平台下使用QJson解析JSON字符串

本篇文章介绍,Qt开发环境下使用QJson库构建JSON字符串,开发平台基于Qt 5.8 Windows。

JSON的构建包括:

  • 简单的键值对
  • JSON对象作为键的值
  • JSON数组
  • JSON数组的嵌套


QJson构建JSON字符串示例

关于JSON字符串的介绍,可以参考JSON简介

首先,解析和构建都要包含如下头文件:

#include <QJsonDocument>
#include <QJsonObject>
#include <QJsonArray>


1.构建一个简单的键值对JSON

void Create_Simple_JSON(void)
{
    //创建JSON对象
    QJsonObject root_Obj;
    //添加键值对,值的类型自动识别,顺序不可自定义
    root_Obj.insert("CSDN", "https://blog.csdn.net/whik1194");
    root_Obj.insert("cnblogs", "https://home.cnblogs.com/u/whik/");
    root_Obj.insert("Github", "https://github.com/whik/");
    root_Obj.insert("Blog", "https://www.wangchaochao.top/");
    root_Obj.insert("status", 1);
    root_Obj.insert("enable", true);
    root_Obj.insert("update_time", "20190723");
    //创建Json文档
    QJsonDocument root_Doc;
    root_Doc.setObject(root_Obj);
    QByteArray root_str = root_Doc.toJson(QJsonDocument::Compact);  //紧凑格式
//    QByteArray root_str = root_Doc.toJson(QJsonDocument::Indented);   //标准JSON格式    QString strJson(root_str);
    QString strJson(root_str);
    qDebug() << strJson;
}


输出结果

{
    "Blog": "https://www.wangchaochao.top/",
    "CSDN": "https://blog.csdn.net/whik1194",
    "Github": "https://github.com/whik/",
    "cnblogs": "https://home.cnblogs.com/u/whik/",
    "enable": true,
    "status": 1,
    "update_time": "20190723"
}


2.构建北京时间JSON字符串

void Create_BJTime_JSON(void)
{
    QJsonObject result_Obj;
    result_Obj.insert("timestamp", "ok");
    result_Obj.insert("datetime_1", "2019-07-21 10:46:57");
    result_Obj.insert("datetime_2", "2019年07月21日 10时46分57秒");
    result_Obj.insert("week_1", "0");
    result_Obj.insert("week_2", "星期日");
    result_Obj.insert("week_3", "周日");
    result_Obj.insert("week_4", "Sunday");
    QJsonObject root_Obj;
    //添加键值对,值的类型自动识别,顺序不可自定义
    root_Obj.insert("status", "success");
    root_Obj.insert("Blog", "www.wangchaochao.top");
    root_Obj.insert("result", result_Obj);
    //创建Json文档
    QJsonDocument root_Doc;
    root_Doc.setObject(root_Obj);
    QByteArray root_str = root_Doc.toJson(QJsonDocument::Compact);  //紧凑格式
//    QByteArray root_str = root_Doc.toJson(QJsonDocument::Indented);   //标准JSON格式
//    qDebug() << root_str; //中文输出乱码
    QString strJson(root_str);
    qDebug() << strJson;
}


输出结果

{
    "status": "success",
    "result": {
        "timestamp": "ok",
        "datetime_1": "2019-07-21 10:46:57",
        "datetime_2": "2019年07月21日 10时46分57秒",
        "week_1": "0",
        "week_2": "星期日",
        "week_3": "周日",
        "week_4": "Sunday"
    },
    "Blog": "www.wangchaochao.top"
}


3.构建字符串数组

void Create_Array_Str_JSON(void)
{
    QJsonArray root_Arr;
    root_Arr.insert(0, "Sunday");
    root_Arr.insert(1, "Monday");
    root_Arr.insert(2, "Tuesday");
    root_Arr.insert(3, "Wednesday");
    root_Arr.insert(4, "Thursday");
    root_Arr.insert(5, "Friday");
    root_Arr.insert(6, "Saturday");
    //创建Json文档
    QJsonDocument root_Doc;
    root_Doc.setArray(root_Arr);
    QByteArray root_str = root_Doc.toJson(QJsonDocument::Compact);  //紧凑格式
//    QByteArray root_str = root_Doc.toJson(QJsonDocument::Indented);   //标准JSON格式
//    qDebug() << root_str; //中文输出乱码
    QString strJson(root_str);
    qDebug() << strJson;
}


输出结果

["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"]


4.构建数组JSON

void Create_Array_JSON(void)
{
    QJsonObject day0_Obj;
    QJsonObject day1_Obj;
    QJsonObject day2_Obj;
    day0_Obj.insert("date", "2019-07-21");
    day0_Obj.insert("cond_txt", "多云");
    day0_Obj.insert("cond_code", "101");
    day0_Obj.insert("hum", "23");
    day0_Obj.insert("tmp_H", "31");
    day0_Obj.insert("tmp_L", "25");
    day1_Obj.insert("date", "2019-07-21");
    day1_Obj.insert("cond_txt", "阵雨");
    day1_Obj.insert("cond_code", "107");
    day1_Obj.insert("hum", "44");
    day1_Obj.insert("tmp_H", "30");
    day1_Obj.insert("tmp_L", "26");
    day2_Obj.insert("date", "2019-07-22");
    day2_Obj.insert("cond_txt", "晴");
    day2_Obj.insert("cond_code", "100");
    day2_Obj.insert("hum", "20");
    day2_Obj.insert("tmp_H", "33");
    day2_Obj.insert("tmp_L", "26");
    QJsonArray weather_Arr;
    weather_Arr.insert(0, day0_Obj);
    weather_Arr.insert(1, day1_Obj);
    weather_Arr.insert(2, day2_Obj);
    QJsonObject root_Obj;
    root_Obj.insert("status", "ok");
    root_Obj.insert("update", "2019-07-21 11:00");
    root_Obj.insert("Blog", "www.wangchaochao.top");
    root_Obj.insert("weather", weather_Arr);    //数组作为weather键的值
    //创建Json文档
    QJsonDocument root_Doc;
    root_Doc.setObject(root_Obj);
    QByteArray root_str = root_Doc.toJson(QJsonDocument::Compact);  //紧凑格式
//    QByteArray root_str = root_Doc.toJson(QJsonDocument::Indented);   //标准JSON格式
//    qDebug() << root_str; //中文输出乱码
    QString strJson(root_str);
    qDebug() << strJson;
}


输出结果

{
    "status": "ok",
    "weather": [{
        "date": "2019-07-21",
        "cond_txt": "多云",
        "cond_code": "101",
        "hum": "23",
        "tmp_H": "31",
        "tmp_L": "25"
    }, {
        "date": "2019-07-22",
        "cond_txt": "晴",
        "cond_code": "100",
        "hum": "20",
        "tmp_H": "33",
        "tmp_L": "26"
    }, {
        "date": "2019-07-23",
        "cond_txt": "阵雨",
        "cond_code": "107",
        "hum": "45",
        "tmp_H": "32",
        "tmp_L": "25"
    }],
    "update": "2019-07-21 11:00",
    "Blog": "www.wangchaochao.top"
}


5.构建数组嵌套的JSON字符串

void Create_Array_Nest_JSON(void)
{
    QJsonArray table_Arr = {"地区", "92号汽油", "95号汽油", "98号汽油", "0号柴油"};
    QJsonArray bj_Arr = {"北京", "6.78", "7.21", "8.19", "6.45"};
    QJsonArray sh_Arr = {"上海", "6.74", "7.17", "7.87", "6.39"};
    QJsonArray js_Arr = {"江苏", "6.75", "7.18", "8.06", "6.37"};
    QJsonArray tj_Arr = {"天津", "6.77", "7.15", "8.07", "6.41"};
    QJsonArray data_Arr;    //数组内嵌套了5个数组
    data_Arr.insert(0, table_Arr);
    data_Arr.insert(1, bj_Arr);
    data_Arr.insert(2, sh_Arr);
    data_Arr.insert(3, js_Arr);
    data_Arr.insert(4, tj_Arr);
    QJsonObject root_Obj;
    root_Obj.insert("status", "ok");
    root_Obj.insert("msg", "全国各省份汽柴油价格信息");
    root_Obj.insert("update", "2019-07-21");
    root_Obj.insert("About", "wcc");
    root_Obj.insert("Blog", "www.wangchaochao.top");
    root_Obj.insert("data", data_Arr);  //数组作为键的值
    //创建Json文档
    QJsonDocument root_Doc;
    root_Doc.setObject(root_Obj);
    QByteArray root_str = root_Doc.toJson(QJsonDocument::Compact);  //紧凑格式
//    QByteArray root_str = root_Doc.toJson(QJsonDocument::Indented);   //标准JSON格式
//    qDebug() << root_str; //中文输出乱码
    QString strJson(root_str);
    qDebug() << strJson;
}


输出结果

{
    "status": "ok",
    "msg": "全国各省份汽柴油价格信息",
    "update": "2019-07-21",
    "data": [
        ["地区", "92号汽油", "95号汽油", "98号汽油", "0号柴油"],
        ["北京", "6.78", "7.21", "8.19", "6.45"],
        ["上海", "6.74", "7.17", "7.87", "6.39"],
        ["江苏", "6.75", "7.18", "8.06", "6.37"],
        ["天津", "6.77", "7.15", "8.07", "6.41"]
    ],
    "About": "wcc",
    "Blog": "www.wangchaochao.top"
}


目录
相关文章
|
3月前
|
JSON JavaScript 前端开发
JavaScript实现字符串转json对象的方法
JavaScript实现字符串转json对象的方法
|
24天前
|
数据采集 JSON 数据处理
抓取和分析JSON数据:使用Python构建数据处理管道
在大数据时代,电商网站如亚马逊、京东等成为数据采集的重要来源。本文介绍如何使用Python结合代理IP、多线程等技术,高效、隐秘地抓取并处理电商网站的JSON数据。通过爬虫代理服务,模拟真实用户行为,提升抓取效率和稳定性。示例代码展示了如何抓取亚马逊商品信息并进行解析。
抓取和分析JSON数据:使用Python构建数据处理管道
|
2月前
|
XML JSON 前端开发
json字符串CSS格式化
完成以上步骤后,你便能在网页中看到格式化后的JSON数据,它们将按照CSS定义的样式进行展示,使数据更易于阅读和理解。通过有效地结合JSON和CSS,你可以创建出更加丰富且易于交互的网页内容。
191 64
|
1月前
|
JSON 前端开发 JavaScript
json字符串如何转为list对象?
json字符串如何转为list对象?
194 7
|
2月前
|
XML JSON 前端开发
json字符串CSS格式化
json字符串CSS格式化
57 4
|
2月前
|
JSON 数据格式 Python
6-1|Python如何将json转化为字符串写到文件内 还保留json格式
6-1|Python如何将json转化为字符串写到文件内 还保留json格式
|
3月前
|
JSON Java 数据格式
Java系列之:生成JSON字符串
这篇文章介绍了两种在Java中生成JSON字符串的方法:使用`JSONObject`类及其`toJSONString`方法来动态生成,以及手动拼接字符串的方式来创建JSON格式的字符串。
Java系列之:生成JSON字符串
|
3月前
|
JSON Go 数据格式
Go实现json字符串与各类struct相互转换
文章通过Go语言示例代码详细演示了如何实现JSON字符串与各类struct之间的相互转换,包括结构体对象生成JSON字符串和JSON字符串映射到struct对象的过程。
30 0
|
4月前
|
存储 JSON Java
Java对象转换为JSON字符串
在Java开发中,常需将数据对象转换为JSON存储,如使用Fastjson库。要将Java对象转为JSON,可调用`JSON.toJSONString(obj)`;反向转换则用`JSON.parseObject(str, Class)`。
|
4月前
|
JSON 数据格式
Unsupported Media Type,传入的字符串数据:这里应该是Json
Unsupported Media Type,传入的字符串数据:这里应该是Json

推荐镜像

更多