cpp-zzzJSON是一个纯C实现的最快JSON解析器
zzzJSON是一个纯C实现的JSON解析器,代码朴素,注释丰富,简单易懂,拥有极致的JSON解析和序列化速度,提供对JSON数据的读写功能,同时,仅依赖glibc且所有代码均包含在一个头文件中,使用极其方便
代码片段和文件信息
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 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-masterREADME.md
文件 86280 2019-04-18 03:40 zzzjson-masterREADMECHN.md
目录 0 2019-04-18 03:40 zzzjson-mastereta
文件 75722 2019-04-18 03:40 zzzjson-masteretazzzjson_beta.h
文件 5736 2019-04-18 03:40 zzzjson-masteruild.sh
目录 0 2019-04-18 03:40 zzzjson-master
esource
文件 120037 2019-04-18 03:40 zzzjson-master
esourcezzzJSON.jpg
目录 0 2019-04-18 03:40 zzzjson-mastersample
目录 0 2019-04-18 03:40 zzzjson-mastersamplec++
文件 3115 2019-04-18 03:40 zzzjson-mastersamplec++sample.cpp
目录 0 2019-04-18 03:40 zzzjson-mastersamplec
文件 2928 2019-04-18 03:40 zzzjson-mastersamplecsample.c
目录 0 2019-04-18 03:40 zzzjson-mastersamplego
文件 456 2019-04-18 03:40 zzzjson-mastersamplegosample.go
目录 0 2019-04-18 03:40 zzzjson-master est
目录 0 2019-04-18 03:40 zzzjson-master estconformance
文件 10940 2019-04-18 03:40 zzzjson-master estconformanceconformance_test.cpp
目录 0 2019-04-18 03:40 zzzjson-master estconformancedata
目录 0 2019-04-18 03:40 zzzjson-master estconformancedatajsonchecker
文件 31 2019-04-18 03:40 zzzjson-master estconformancedatajsoncheckerfail1.json
文件 58 2019-04-18 03:40 zzzjson-master estconformancedatajsoncheckerfail10.json
文件 29 2019-04-18 03:40 zzzjson-master estconformancedatajsoncheckerfail11.json
文件 31 2019-04-18 03:40 zzzjson-master estconformancedatajsoncheckerfail12.json
文件 43 2019-04-18 03:40 zzzjson-master estconformancedatajsoncheckerfail13.json
文件 31 2019-04-18 03:40 zzzjson-master estconformancedatajsoncheckerfail14.json
文件 34 2019-04-18 03:40 zzzjson-master estconformancedatajsoncheckerfail15.json
文件 8 2019-04-18 03:40 zzzjson-master estconformancedatajsoncheckerfail16.json
文件 34 2019-04-18 03:40 zzzjson-master estconformancedatajsoncheckerfail17.json
............此处省略638个文件信息
#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!
“);
return 1;
}
// 深复制
GetAndSet(src_v des_v);
// 序列化
const char *des_json = Stringify(des_v);
printf(“src_json:%s
“ src_json);
if (des_json != 0)
printf(“des_json:%s
“ 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-masterREADME.md
文件 86280 2019-04-18 03:40 zzzjson-masterREADMECHN.md
目录 0 2019-04-18 03:40 zzzjson-mastereta
文件 75722 2019-04-18 03:40 zzzjson-masteretazzzjson_beta.h
文件 5736 2019-04-18 03:40 zzzjson-masteruild.sh
目录 0 2019-04-18 03:40 zzzjson-master
esource
文件 120037 2019-04-18 03:40 zzzjson-master
esourcezzzJSON.jpg
目录 0 2019-04-18 03:40 zzzjson-mastersample
目录 0 2019-04-18 03:40 zzzjson-mastersamplec++
文件 3115 2019-04-18 03:40 zzzjson-mastersamplec++sample.cpp
目录 0 2019-04-18 03:40 zzzjson-mastersamplec
文件 2928 2019-04-18 03:40 zzzjson-mastersamplecsample.c
目录 0 2019-04-18 03:40 zzzjson-mastersamplego
文件 456 2019-04-18 03:40 zzzjson-mastersamplegosample.go
目录 0 2019-04-18 03:40 zzzjson-master est
目录 0 2019-04-18 03:40 zzzjson-master estconformance
文件 10940 2019-04-18 03:40 zzzjson-master estconformanceconformance_test.cpp
目录 0 2019-04-18 03:40 zzzjson-master estconformancedata
目录 0 2019-04-18 03:40 zzzjson-master estconformancedatajsonchecker
文件 31 2019-04-18 03:40 zzzjson-master estconformancedatajsoncheckerfail1.json
文件 58 2019-04-18 03:40 zzzjson-master estconformancedatajsoncheckerfail10.json
文件 29 2019-04-18 03:40 zzzjson-master estconformancedatajsoncheckerfail11.json
文件 31 2019-04-18 03:40 zzzjson-master estconformancedatajsoncheckerfail12.json
文件 43 2019-04-18 03:40 zzzjson-master estconformancedatajsoncheckerfail13.json
文件 31 2019-04-18 03:40 zzzjson-master estconformancedatajsoncheckerfail14.json
文件 34 2019-04-18 03:40 zzzjson-master estconformancedatajsoncheckerfail15.json
文件 8 2019-04-18 03:40 zzzjson-master estconformancedatajsoncheckerfail16.json
文件 34 2019-04-18 03:40 zzzjson-master estconformancedatajsoncheckerfail17.json
............此处省略638个文件信息
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件举报,一经查实,本站将立刻删除。
评论列表(条)