Qt Json序列化與反序列化
阿新 • • 發佈:2022-03-14
Qt Json序列化與反序列化
Qt的一個用於序列化與反序列化的庫 xpack,也可用於c++。
使用方法
下載庫檔案
按照它的預設樣子放好,建議單獨放一個資料夾
專案引用
不用修改.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方法,記得評論下