介绍
基于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);//输出到QStringQString toJsonQString();//返回错误信息QString getErrorMsg(){ return m_errorMsg; }//从Value获得字符串QString getQString(const rapidjson::Value &value);//获得数组大小,如果非数组类型,返回-1int getArraySize(const rapidjson::Value &value);//清除数组 如果非数组类型 不操作void clearArray(rapidjson::Value &value);//获得Obj大小,如果非Obj类型,返回-1int 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 转为 QVariantQVariant getQVariant(const rapidjson::Value &value);QVariant getQVariant(const rapidjson::Value *value){return getQVariant(*value);}// 从 QVariant 转为 rapidjson::valuerapidjson::Value getRapidValue(const QVariant &var);/*------------------------------------路径操作 ------------------------------------*/// 格式说明:/group/0/name 必须/开头,支持数字格式的array, -号表示Array的最后一个下标//通过路径 存在修改值,不存在创建值 路径格式:/group/0/namevoid 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);
