---
title: 数据类型
description: "保存Json反序列化后得到的结构体，并提供根据key获取对应值为基础数据类型节点的接口。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengaccel/system-lib/dg-ajsonl/kunpengaccel_json_16_0008.html
sourcePath: /source/zh/kunpengaccel/system-lib/dg-ajsonl/kunpengaccel_json_16_0008.html
indexId: 44ef7de6083a21ea147e27e47615bfb255589cefba5ea321d884746880c788eb75
---
# 数据类型

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