Qt_C++JSON转结构体

文章目录[隐藏]
  • Qt_C++++JSON 转结构体前言
  • Qt_C++++JSON 转结构体需求说明
  • Qt_C++++JSON 转结构体代码说明
  • Qt_C++++JSON 转结构体最终实现效果

Qt_C++++JSON 转结构体前言

最近在研究 Redis 的是时候,想着传输数据用 JSON 数据格式。但是Qt自带的 QJsonDocument 方式其实也是可以用的,但是我嫌弃(lan)读取 dom 的方式麻烦,
于是网上搜索了一个库来用,做了一些测试,基本功能已经满足,但是还没有深入用,不知道有没有什么坑,不扯远了,有没有坑用了就知道。
今天先给大家分享一个我今天做的 demo,可以实现一些基本数据的读取。

Qt_C++++JSON 转结构体需求说明

我想写入的 JSON 数据格式如下:
{
    "name": "C 加加",
    "master": 2020,
    "members": [{
        "id": 1,
        "name": "xiaohua",
        "mail": "[email protected]"
    }, {
        "id": 2,
        "name": "xiaohe",
        "mail": "[email protected]"
    }],
    "hobby": {
        "id": 1,
        "hname": "xiaohuahua",
        "hdesc": "[email protected]"
    }
}

Qt_C++++JSON 转结构体代码说明

#include "mainwindow.h"
#include "ui_mainwindow.h"

#include "jsontest.h"
#include "x2struct/x2struct.hpp"   // 此库需要下载然后包含到项目中
#include 
#include 
#include 


using namespace std;


// 定义数组嵌套的 json
struct User {
    int id;

    string name;
    string mail;

    User(int i = 0, const string& n = "", const string& m = "") :
        id(i),name(n),mail(m){}
    XTOSTRUCT(O(id, name, mail));

};

// 定义内层嵌套 json
struct Hobby {

    int id;

    string hname;
    string hdesc;

    Hobby(int hi = 0, const string& hn = "", const string& hd = ""):
    id(hi), hname(hn), hdesc(hd){}

    XTOSTRUCT(O(id, hname, hdesc));

};

// 定以外层 json 
struct Group {
    string name;
    int master;
    vector members;

    Hobby hobby;
    XTOSTRUCT(O(name, master, members, hobby));  // 此处不要忘记添加,我在此处犯错了
};



MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);


    Group g;
    g.name = "C 加加";
    g.master = 2020;
    g.members.resize(2);
    g.members[0] = User(1, "xiaohua", "[email protected]");
    g.members[1] = User(2, "xiaohe", "[email protected]");
    g.hobby = Hobby(1, "xiaohuahua", "[email protected]");

//    g.hobbyMap.clear();
//    g.hobbyMap["hobby"] = Hobby(1, "xiaohuahua", "[email protected]");

    string json = x2struct::X::tojson(g);
    cout < string
//    cout<<"======== struct <-----> string ==========="< string
//    cout<<"======== map <-----> string ==========="< m;
//    X::loadjson(smap, m, false);
//    cout< string
//    cout<<"======== vector <-----> string ==========="< v;
//    X::loadjson(svector, v, false);
//    cout<

Qt_C++++JSON 转结构体最终实现效果

Qt_C++JSON转结构体

你可能感兴趣的:(json,go,物联网,php,unity)