数据类型
JsonElement
保存Json反序列化后得到的结构体,并提供根据key获取对应值为基础数据类型节点的接口。
class JsonElement : public Object {
shared<kacc_json::Document> doc{nullptr};
kacc_json::Node *node{nullptr};
};
GsonObject
继承自JsonElement,额外提供获取复杂数据类型的子节点的接口。
class GsonObject : public JsonElement {
public:
using JsonElement::JsonElement;
GsonObject *getAsJsonObject(const std::string &key);
JsonArray *getAsJsonArray(std::string_view key) const;
};
JsonArray
继承自JsonElement,提供与Java基础库适配的Array接口。
class JsonArray final : public JsonElement {
public:
class JsonArrayIterator final : public Iterator {
using jsonArrayIterator = std::list<JsonElement *>::iterator;
jsonArrayIterator current_;
jsonArrayIterator end_;
public:
JsonArrayIterator(const jsonArrayIterator begin, const jsonArrayIterator end);
bool hasNext() override;
Object *next() override;
};
void addLast(JsonElement *a);
std::list<JsonElement *> list;
Iterator *iterator();
~JsonArray() override;
};
JsonParser
提供反序列化接口。
class JsonParser final : public Object {
public:
static JsonElement *parseString(String *str);
};
Gson
提供toJson和fromJson接口。
class Gson : public Object {
public:
static String *toJson(JsonElement *jsonElement);
static String *toJson(Map *map);
static String *toJson(Object *obj);
static Object *fromJson(std::string str);
static Object *fromJson(String *str);
private:
static kacc_json::Node map2JsonNode(Map &map, Allocator &allo);
static kacc_json::Node list2JsonNode(List &list, Allocator &allo);
};
父主题: 函数定义