Qt Json序列化与反序列化

Qt Json序列化与反序列化

Qt的一个用于序列化与反序列化的库 xpack,也可用于c++。

使用方法

下载库文件

xpack 标签 - Gitee.com

按照它的默认样子放好,建议单独放一个文件夹

项目引用

不用修改.pro文件,直接在源代码文件里 include相对路径 进来就好了

例如:

  • Year.h
#include "../xpack/json.h"

struct Year{
    int y;
    QString m;
    int d;
    Year();
    
    XPACK(O(
    	y,
        m,
        d
    ));
};
  • main.cpp
#include "../xpack/json.h"

int main(int argc, char* argv[]){
	Year y = Year();
	y.y = 2022;
	y.m = "03";
	y.d = 14;
	
    std::string jsonStr = xpack::json::encode(year);
	
    std::cout<< jsonStr <<std::endl;
}
  • 应用程序输出
"{\"y\":2022,\"m\":\"03\",\"d\":14}"
  • 若存在类嵌套,被嵌套的类需要修改
struct datetime{
	Year date;//上面写的那个Year类,需要修改XPACK的写法
	int h;
	int M;
	int s
};

//改为
struct Year{
    int y;
    QString m;
    int d;
    Year();
};
//写在struct Year外
XPACK_OUT(Year, O(
    	y,
        m,
        d
));

开启Qt支持

  • 修改config.h,开启XPACK_SUPPORT_QT这个宏(或者在编译选项开启)
  • 当前支持 QString/QMap/QList/QVector

Reference

Other

我记得Qt自己支持一种类的写法,支持class的,但是我找不到那种方法了
会用到 Q_PROPERTY(int y READ y WRITE setY)类似于这样的,但是我找不到了这种方法了,这种好像是Qt自支持的,谁知道记得评论下,啊


谁知道Qt自己的那种Json方法,记得评论下

posted @ 2022-03-14 13:47  echo_lovely  阅读(1429)  评论(0编辑  收藏  举报