相关文章推荐
失望的苹果  ·  sql 删除最后一行-掘金·  2 年前    · 
坏坏的西瓜  ·  保存 SSIS 包(SQL Server ...·  2 年前    · 
备案 控制台
学习
实践
活动
专区
工具
TVP
写文章
专栏首页 电子电路开发学习 Qt平台下使用QJson构建JSON字符串
1 0

海报分享

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

前言

上两篇文章介绍了 使用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);