json-tutorial
json-tutorial copied to clipboard
关于第八章的解答篇
用C++20重写了一遍。使用了智能指针来管理,std::variant来替代union,实现了将几个模块分离封装,然后其余解析思想都是这几章的内容,cppjson,欢迎交流
学习学习!
该代码运行会报错:
test.out: /home/yfn/code/json/C_Json/tutorial08/leptjson.c:546: lept_get_number: Assertion `v != NULL && v->type == LEPT_NUMBER' failed.
该代码运行会报错:
test.out: /home/yfn/code/json/C_Json/tutorial08/leptjson.c:546: lept_get_number: Assertion `v != NULL && v->type == LEPT_NUMBER' failed.
这行代码报错原因在于,leptjson.c文件中应为 void lept_shrink_object(lept_value* v) { assert(v != NULL && v->type == LEPT_OBJECT); if(v->u.o.capacity > v->u.o.size) { v->u.o.capacity = v->u.o.size; v->u.o.m = (lept_member *)realloc(v->u.o.m, v->u.o.capacity * sizeof(lept_member)); /*原先写的是sizeof(lept_value) */ } }