#ifndef NLOHMANN_JSON_WRAPPER_H #define NLOHMANN_JSON_WRAPPER_H #include "json.hpp" #include "GdCPP_Exports.h" /** * @addtogroup ksjson * @{ * @addtogroup nlohmann_json_wrapper * @brief 引用nlohmann::json的类和异常等。 * @details * @{ */ /// \brief 将nlohmann::json定义为jsonobj,简化掉namespace的访问。 /// /// 本来想用json,但语义不够明确。因此采用了一个跟Qt的QJsonObject近似的名称, /// 表示可以替代QJsonObject,实际上这个类的功能很强大,可以完全替代QJsonObject、QJsonValue、QJsonArray, /// 可以替代QJsonDocument的部分功能,甚至也能部分替代QVariant用。 using jsonobj = nlohmann::ordered_json; // 以下定义用于简化json的异常类型的访问 using json_exception = nlohmann::json::exception; using json_parse_err = nlohmann::json::parse_error; using json_invalid_iterator = nlohmann::json::invalid_iterator; using json_type_error = nlohmann::json::type_error; using json_out_of_range = nlohmann::json::out_of_range; using json_other_error = nlohmann::json::other_error; // 判断数据类型是否可以做json的key template struct JsonKey; template <> struct JsonKey { typedef const std::string& Type; }; template <> struct JsonKey { typedef const char* Type; }; // 判断类型是否可以做数组长度 template struct ArraySizeT; template <> struct ArraySizeT { typedef int Type; }; template <> struct ArraySizeT { typedef size_t Type; }; /** @} nlohmann_json_wrapper */ /** @} ksjson */ #endif // NLOHMANN_JSON_WRAPPER_H