类型
undefined-ux
# JsonType
用于判定JsonVal结构体中值类型
# 定义
typedef enum {
STRING,
NUMBER,
BOOL,
ARRAY,
OBJECT,
NONE
} JsonType;
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# JsonObj
用于存储Object字面量,例如 {"testKey": "testVal"}
# 定义
struct JsonObj {
size_t size;
struct JsonString* key;
struct JsonVal* value;
};
1
2
3
4
5
2
3
4
5
# 方法
# 插入元素 JsonObjInsert
在内存分配失败情况下将直接导致程序非零退出
参数 | 类型 | 备注 |
---|---|---|
obj | struct JsonObj* | 被插入的Object类型指针 |
key | const struct JsonString* | 插入值的键 |
value | const struct JsonVal* | 插入值 |
返回值: void
# 析构 destoryJsonObj
参数 | 类型 |
---|---|
obj | struct JsonObj* |
返回值: void
# JsonVal
# 关于String,Number,None,Bool类型实现的解释
因为仅需解析并格式化,压缩及语法检查功能, 后续无数值改动等内容,且格式化输出等需求四个类型所需方法及实现几乎完全一致, 所以直接使用String类型存储,减轻开发难度
# 定义
struct JsonVal {
JsonType type;
union {
struct JsonString* val; // String, Number, NONE, BOOL
struct JsonArray* arr;
struct JsonObj* obj;
};
};
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
# 方法
# 析构 destoryJsonVal
参数 | 类型 |
---|---|
obj | struct JsonVal* |
返回值: void
# JsonString
# 定义
struct JsonString {
char* str;
size_t length;
size_t capacity;
};
1
2
3
4
5
2
3
4
5
# 方法
在内存分配失败情况下将直接导致程序非零退出
# 初始化
# 由空值初始化 JsonString_New
参数 | 类型 |
---|---|
无 | void |
返回值: struct JsonString*
空值初始化默认JsonString容量为10
# 由char数组初始化 JsonStringFromCharArray
参数 | 类型 |
---|---|
str | const char* |
返回值: struct JsonString*
# 由char数组切片初始化 JsonStringFromCharArraySlice
参数 | 类型 | 备注 |
---|---|---|
start | const char* | |
end | const char* | 与C++STL容器相同,指向切片后一位 |
返回值: struct JsonString*
# 由char值初始化 JsonStringFromChar
参数 | 类型 |
---|---|
c | const char |
返回值: struct JsonString*
char值初始化默认JsonString容量为10
# 追加字符 JsonStringPushBackChar
参数 | 类型 |
---|---|
c | const char |
str | struct JsonString* |
返回值 void
# 析构 destoryJsonString
参数 | 类型 |
---|---|
str | struct JsonString* |
返回值 void
# JsonArray
# 定义
struct JsonArray {
struct JsonVal* arr;
size_t length;
}
1
2
3
4
2
3
4
# 方法
在内存分配失败情况下将直接导致程序非零退出
# 初始化
# 空值 JsonArrayNew
参数 | 类型 |
---|---|
无 | void |
返回值: struct JsonArray*
空值初始化默认JsonArray容量为10
# 由JsonVal数组作为初始化 JsonArrayFromArray
参数 | 类型 |
---|---|
arr | struct JsonVal* |
length | size_t |
返回值: struct JsonArray*
# 追加值 JsonArrayPushBack
参数 | 类型 |
---|---|
arr | struct JsonVal* |
val | struct JsonVal* |
返回值: void
# 析构 destoryJsonArray
参数 | 类型 |
---|---|
arr | struct JsonVal* |
返回值: void