39 lines
1.2 KiB
C++
39 lines
1.2 KiB
C++
#ifndef _CC_JSONOBJECT_H
|
||
#define _CC_JSONOBJECT_H
|
||
|
||
#include "nlohmann/json.hpp"
|
||
#include "CC.h"
|
||
#include "string"
|
||
|
||
using JSON = nlohmann::json;
|
||
|
||
// 定义用于简化json序列化和反序列化的宏
|
||
#define JSON_TYPE_INTRUSIVE(Type, ...) \
|
||
friend void to_json(nlohmann::json& nlohmann_json_j, const Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_TO, __VA_ARGS__)) } \
|
||
friend void from_json(const nlohmann::json& nlohmann_json_j, Type& nlohmann_json_t) { NLOHMANN_JSON_EXPAND(NLOHMANN_JSON_PASTE(NLOHMANN_JSON_FROM, __VA_ARGS__)) }
|
||
|
||
namespace CTL {
|
||
// 定义一个继承自nlohmann::json的JSONObject类
|
||
class JSONObject: public JSON{
|
||
public:
|
||
// 继承nlohmann::json的构造函数
|
||
using nlohmann::json::json;
|
||
|
||
// 构造函数,接受一个JSON对象作为参数
|
||
JSONObject(const JSON& j) : JSON(j) {}
|
||
|
||
// 向JSON对象中添加或更新键值对
|
||
void put(const char* key,nlohmann::json value);
|
||
|
||
// 获取指定键的值
|
||
JSON get(const char* key) const;
|
||
|
||
// 生成描述JSON对象的字符串表示
|
||
[[nodiscard]] std::string to_String() const;
|
||
private:
|
||
|
||
};
|
||
}
|
||
|
||
#endif
|