介绍
基于RapidJson, 针对QT的封装。简化一些操作,省去一些转换。
本库所有代码纯个人编写。如果遇到问题,请直接联系我。
使用
#include "VRapidJson.h"
功能
VRapidjson(rapidjson::Document &doc);
// 从字符串解析
bool parseJsonQString(const QString &jsonStr);
// 从文件解析
bool parseJsonFile(const QString &jsonFile);
//输出到文件
bool toJsonFile(const QString &jsonFile = 0);
//输出到QString
QString toJsonQString();
//返回错误信息
QString getErrorMsg(){ return m_errorMsg; }
//从Value获得字符串
QString getQString(const rapidjson::Value &value);
//获得数组大小,如果非数组类型,返回-1
int getArraySize(const rapidjson::Value &value);
//清除数组 如果非数组类型 不操作
void clearArray(rapidjson::Value &value);
//获得Obj大小,如果非Obj类型,返回-1
int getObjectSize(const rapidjson::Value &value);
//清除Obj 如果非Obj类型 不操作
void clearObject(rapidjson::Value &value);
//获得大小 自动判断类型 自动取大小
int getSize( const rapidjson::Value &value);
int getSize( const rapidjson::Value *value) { return getSize(*value);}
//类型判断
bool isObject(){return m_jsonDocument.IsObject();}
bool isArray(){return m_jsonDocument.IsArray();}
//从 rapidjson::value 转为 QVariant
QVariant getQVariant(const rapidjson::Value &value);
QVariant getQVariant(const rapidjson::Value *value){return getQVariant(*value);}
// 从 QVariant 转为 rapidjson::value
rapidjson::Value getRapidValue(const QVariant &var);
/*------------------------------------路径操作 ------------------------------------*/
// 格式说明:/group/0/name 必须/开头,支持数字格式的array, -号表示Array的最后一个下标
//通过路径 存在修改值,不存在创建值 路径格式:/group/0/name
void setValueFromPath(const QString &path, const rapidjson::Value &value);
//通过路径生成数据。值全部被赋值为 null 例:/a/b/4/c -> "a":{"b":[null,null,null,null,{"c":null}]}
void createRootFromPath(const QString &path);
//通过路径 取值 注意值是指针类型 当值不存在时 为空指针
rapidjson::Value* getValueFromPath(const QString &path);
//通过路径 取值 如果路径不存在,返回默认值,因为存在默认值,所以该值肯定存在,所以返回引用
rapidjson::Value& getValueFromPathWithDefault(const QString &path, const rapidjson::Value &defaultValue);
//通过路径 替换值
void swapValueFromPath(const QString &path, rapidjson::Value &swapValue);
//通过路径 删除值 如果删除成功返回真 如果失败返回假
bool eraseValueFromPath(const QString &path);