• 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方法,记得评论下

  • 相关阅读:
    在C#中使用正则表达式
    C++流操纵算子(格式控制)
    linux(Fedora) doxygen 的安装和使用
    UTF8
    java cookie全解析
    Fedora16 安装Adobe Flash Player方法
    工程素养
    感悟数据封装
    谷歌如何保护隐私
    openCV画的词法分析图
  • 原文地址:https://www.cnblogs.com/FlyonGrass/p/16003736.html
Copyright © 2020-2023  润新知