鲲鹏社区首页
中文
注册
开发者
我要评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

数据类型

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);
};