介绍

基于RapidJson, 针对QT的封装。简化一些操作,省去一些转换。
本库所有代码纯个人编写。如果遇到问题,请直接联系我。

使用

  1. #include "VRapidJson.h"

功能

  1. VRapidjson(rapidjson::Document &doc);
  2. // 从字符串解析
  3. bool parseJsonQString(const QString &jsonStr);
  4. // 从文件解析
  5. bool parseJsonFile(const QString &jsonFile);
  6. //输出到文件
  7. bool toJsonFile(const QString &jsonFile = 0);
  8. //输出到QString
  9. QString toJsonQString();
  10. //返回错误信息
  11. QString getErrorMsg(){ return m_errorMsg; }
  12. //从Value获得字符串
  13. QString getQString(const rapidjson::Value &value);
  14. //获得数组大小,如果非数组类型,返回-1
  15. int getArraySize(const rapidjson::Value &value);
  16. //清除数组 如果非数组类型 不操作
  17. void clearArray(rapidjson::Value &value);
  18. //获得Obj大小,如果非Obj类型,返回-1
  19. int getObjectSize(const rapidjson::Value &value);
  20. //清除Obj 如果非Obj类型 不操作
  21. void clearObject(rapidjson::Value &value);
  22. //获得大小 自动判断类型 自动取大小
  23. int getSize( const rapidjson::Value &value);
  24. int getSize( const rapidjson::Value *value) { return getSize(*value);}
  25. //类型判断
  26. bool isObject(){return m_jsonDocument.IsObject();}
  27. bool isArray(){return m_jsonDocument.IsArray();}
  28. //从 rapidjson::value 转为 QVariant
  29. QVariant getQVariant(const rapidjson::Value &value);
  30. QVariant getQVariant(const rapidjson::Value *value){return getQVariant(*value);}
  31. // 从 QVariant 转为 rapidjson::value
  32. rapidjson::Value getRapidValue(const QVariant &var);
  33. /*------------------------------------路径操作 ------------------------------------*/
  34. // 格式说明:/group/0/name 必须/开头,支持数字格式的array, -号表示Array的最后一个下标
  35. //通过路径 存在修改值,不存在创建值 路径格式:/group/0/name
  36. void setValueFromPath(const QString &path, const rapidjson::Value &value);
  37. //通过路径生成数据。值全部被赋值为 null 例:/a/b/4/c -> "a":{"b":[null,null,null,null,{"c":null}]}
  38. void createRootFromPath(const QString &path);
  39. //通过路径 取值 注意值是指针类型 当值不存在时 为空指针
  40. rapidjson::Value* getValueFromPath(const QString &path);
  41. //通过路径 取值 如果路径不存在,返回默认值,因为存在默认值,所以该值肯定存在,所以返回引用
  42. rapidjson::Value& getValueFromPathWithDefault(const QString &path, const rapidjson::Value &defaultValue);
  43. //通过路径 替换值
  44. void swapValueFromPath(const QString &path, rapidjson::Value &swapValue);
  45. //通过路径 删除值 如果删除成功返回真 如果失败返回假
  46. bool eraseValueFromPath(const QString &path);