资源简介
zzzJSON是一个纯C实现的JSON解析器,代码朴素,注释丰富,简单易懂,拥有极致的JSON解析和序列化速度,提供对JSON数据的读写功能,同时,仅依赖glibc且所有代码均包含在一个头文件中,使用极其方便
代码片段和文件信息
#include “../../zzzjson.h“
#include
// 深复制函数,这里命名为GetAndSet更直观
void GetAndSet(Value *srcv Value *desv)
{
// 获取值的类型
const JSONType *t;
t = Type(srcv);
if (t == 0)
return;
switch (*t)
{
case JSONTYPEARRAY:
{
// 如果是数组,则把当前值设为数组,然后遍历并复制数组中的每个值
SetArray(desv);
Value *next = Begin(srcv);
while (next != 0)
{
Value *v = NewValue(desv->A);
GetAndSet(next v);
if (ArrayAddFast(desv v) != True)
return;
next = Next(next);
}
break;
}
case JSONTYPEobject:
{
// 如果是对象,则把当前值设为对象,然后遍历并复制对象中的每个值
SetObj(desv);
Value *next = Begin(srcv);
while (next != 0)
{
Value *v = NewValue(desv->A);
SetKeyFast(v GetKey(next));
GetAndSet(next v);
if (ObjAddFast(desv v) != True)
return;
next = Next(next);
}
break;
}
case JSONTYPEBOOL:
{
// 如果是布尔值,则获取并复制该值
const zzz_BOOL *b = GetBool(srcv);
if (b == 0)
return;
SetBool(desv *b);
break;
}
case JSONTYPENULL:
{
// 如果是空,则复制该值
if (IsNull(srcv) == False)
return;
SetNull(desv);
break;
}
case JSONTYPESTRING:
{
// 如果是字符串,则获取并复制该字符串
const char *str = GetStr(srcv);
if (str == 0)
return;
// 如果需要拷贝字符串,则需要使用SetStr
if (SetStrFast(desv str) != True)
return;
break;
}
case JSONTYPENUMBER:
{
// 如果是数字,则获取并复制该数字
const char *str = GetNumStr(srcv);
if (str == 0)
return;
// 如果需要拷贝数字,则需要使用SetNumStr
if (SetNumStrFast(desv str) != True)
return;
break;
}
}
}
int main()
{
const char *src_json = “[{\“key\“:true}false{\“key1\“:true}[nullfalse[]true][\“\“123\“str\“]null]“;
// 创建一个内存分配器
Allocator *A = NewAllocator();
// 创建两个值
Value *src_v = NewValue(A);
Value *des_v = NewValue(A);
// 解析JSON文本
BOOL ret = ParseFast(src_v src_json);
if (ret != True)
{
printf(“ParseFast Fail!\n“);
return 1;
}
// 深复制
GetAndSet(src_v des_v);
// 序列化
const char *des_json = Stringify(des_v);
printf(“src_json:%s\n“ src_json);
if (des_json != 0)
printf(“des_json:%s\n“ des_json);
// 释放内存
ReleaseAllocator(A);
return 0;
}
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2019-04-18 03:40 zzzjson-master\
文件 199 2019-04-18 03:40 zzzjson-master\.gitattributes
文件 401 2019-04-18 03:40 zzzjson-master\.gitignore
文件 19332 2019-04-18 03:40 zzzjson-master\README.md
文件 86280 2019-04-18 03:40 zzzjson-master\READMECHN.md
目录 0 2019-04-18 03:40 zzzjson-master\beta\
文件 75722 2019-04-18 03:40 zzzjson-master\beta\zzzjson_beta.h
文件 5736 2019-04-18 03:40 zzzjson-master\build.sh
目录 0 2019-04-18 03:40 zzzjson-master\resource\
文件 120037 2019-04-18 03:40 zzzjson-master\resource\zzzJSON.jpg
目录 0 2019-04-18 03:40 zzzjson-master\sample\
目录 0 2019-04-18 03:40 zzzjson-master\sample\c++\
文件 3115 2019-04-18 03:40 zzzjson-master\sample\c++\sample.cpp
目录 0 2019-04-18 03:40 zzzjson-master\sample\c\
文件 2928 2019-04-18 03:40 zzzjson-master\sample\c\sample.c
目录 0 2019-04-18 03:40 zzzjson-master\sample\go\
文件 456 2019-04-18 03:40 zzzjson-master\sample\go\sample.go
目录 0 2019-04-18 03:40 zzzjson-master\test\
目录 0 2019-04-18 03:40 zzzjson-master\test\conformance\
文件 10940 2019-04-18 03:40 zzzjson-master\test\conformance\conformance_test.cpp
目录 0 2019-04-18 03:40 zzzjson-master\test\conformance\data\
目录 0 2019-04-18 03:40 zzzjson-master\test\conformance\data\jsonchecker\
文件 31 2019-04-18 03:40 zzzjson-master\test\conformance\data\jsonchecker\fail1.json
文件 58 2019-04-18 03:40 zzzjson-master\test\conformance\data\jsonchecker\fail10.json
文件 29 2019-04-18 03:40 zzzjson-master\test\conformance\data\jsonchecker\fail11.json
文件 31 2019-04-18 03:40 zzzjson-master\test\conformance\data\jsonchecker\fail12.json
文件 43 2019-04-18 03:40 zzzjson-master\test\conformance\data\jsonchecker\fail13.json
文件 31 2019-04-18 03:40 zzzjson-master\test\conformance\data\jsonchecker\fail14.json
文件 34 2019-04-18 03:40 zzzjson-master\test\conformance\data\jsonchecker\fail15.json
文件 8 2019-04-18 03:40 zzzjson-master\test\conformance\data\jsonchecker\fail16.json
文件 34 2019-04-18 03:40 zzzjson-master\test\conformance\data\jsonchecker\fail17.json
............此处省略638个文件信息
相关资源
- cpp-室外基于GPS的无人机分布式编队避
- 西电-面向对象课件褚华老师所著
- cpp-基于MXNetC框架的CPU实时人脸识别
- gsl-2.6.7z
- 《编译原理第二版》完整版
- vim配置成强大的IDE
- K66_逐飞.zip
- 山东大学软件学院_操作系统实验1
- mingw-w64压缩包
- ImageFusion.zip
- STM32Cube_fw_F4_V1.24.1 CubeMX的F4系列的封装
- 未来教育考试系统.zip
- 西安科技大学 程序设计大赛总决赛原
- 矩阵乘法及两种求逆方法
- VC 开发的MIPS五级整数流水线模拟程序
- cpp-基于ArduinoMEGA2560的智能物流小车工
- 华南农业大学数据结构上机题目答案
- Proteus8.9 仿真STM32407ZGT6系列基础模板
- 经典的背包问题九讲,必看
- 最新的libssh2库源码
- 信息学奥赛一本通课后练习答案汇总
- 操作系统实验生产者与消费者实验报
- 学生管理系统 根据数据结构的链表知
- VC使用jmail.dll编写电子邮件发送和接受
- 哈工程本科算法实验-0-1背包动态规划
- linux 下c实现简单的网络嗅探器
- 计算机图形学四面体几何变换.doc
- SWMM51014代码编译及扩展案例182387
- conio.h头文件
- 利用栈求表达式的值
评论
共有 条评论