cjson判断字段是否纯在_cJSONAPI接⼝使⽤说明
cJSON API 接⼝使⽤说明
cJSON的介绍
cJSON是⼀个轻量级的JSON解析器使⽤ANSIC标准。
所谓的轻量级,如果你的项⽬需要使⽤到解析JSON,那么只需要将cJSON的库中的cJSON.h和cJSON.c放⼊到你的项⽬中适当的位置就⾏了。
⽬前介绍的cJSON的版本为1.5.7。
cJSON库的项⽬的github地址为:cJSON
在项⽬的过程中还使⽤都了shell⽂件的解析JSON的库,也是轻量级的就是⼀个JSON.sh⽂件。
有兴趣的可以看⼀下这个shell的JSON库, JSON.sh
现在已经有了各种语⾔的解析的JSON的库,⼤家可以⾃⾏到github上⾯搜索
为什么介绍cJSON
在项⽬中需要使⽤到cJSON的解析JSON库,但是总感觉有点⽤起来不顺⼿,所以就⾃⼰写些demo来使⽤这些接⼝。
主要⼀些cJSON的接⼝使⽤到内存分配的问题,所以特别要注意,⽽且就在1.5.7刚刚修复了⼀个内存的问题。
组内还在讨论要不要,把cJSON的问题再升级⼀下。
⾃⼰做了写了⼀些⾮常简陋并且丑陋的example代码,link 下⾯的cjson⽂件下
cJSON API 使⽤总结cJSON API
说明
备注
cJSON_Version()
获得cJSON的版本
返回字符串常量
cJSON_InitHooks();
初始化cJSON_Hooks结构体
没太明⽩
cJSON_Parse();
将字符串解析成cJSON结构体
cJSON_ParseWithOpts()
c++string类型使⽤⼀些配置解析字符串
cJSON_Print()
将cJSON结构体转换成格式化的字符串
cJSON_PrintUnformatted()
将cJSON结构体转换成未格式化的字符串
cJSON_PrintBuffered()
将cJSON结构体使⽤buffer的字符串,格式化可选cJSON_PrintPreallocated()
将cJSON结构体使⽤预分配的内存的字符串,格式化可选cJSON_Delete()
删除cJSON结构体
删除⼦对象,所有都会删除
cJSON_GetArraySize()
返回Array类型的⼤⼩,对Object类型也是有效的
cJSON_GetArrayItem()
返回Array类型的index的值,对Object类型也有效cJSON_GetObjectItem()
使⽤key获得对应的value
cJSON_GetObjectItemCaseSensitive()
使⽤对⼤⼩写敏感的key获得对应的value
cJSON_HasObjectItem()
判断是否ObjectItem存在
cJSON_GetErrorPtr()
获得错误信息
cJSON_IsInvalid()
类型判断
cJSON_IsFalse()
类型判断
cJSON_IsTrue()
类型判断
cJSON_IsBool()
类型判断
cJSON_IsNull()
类型判断
cJSON_IsNumber()
类型判断
cJSON_IsString()
类型判断
cJSON_IsArray()
类型判断
cJSON_IsObject()
类型判断
cJSON_IsRaw()
类型判断
cJSON_CreateNull()
创造对应类型的cJSON
cJSON_CreateTrue()
创造对应类型的cJSON
cJSON_CreateFalse()
创造对应类型的cJSON
cJSON_CreateBool()
创造对应类型的cJSON
cJSON_CreateNumber()
创造对应类型的cJSON
cJSON_CreateString()
创造对应类型的cJSON
cJSON_CreateRaw()
创造对应类型的cJSON
cJSON_CreateArray()
创造对应类型的cJSON
cJSON_CreateObject()
创造对应类型的cJSON
cJSON_CreateIntArray()
批量创造对应类型的cJSON cJSON_CreateFloatArray()批量创造对应类型的cJSON cJSON_CreateDoubleArray()批量创造对应类型的cJSON cJSON_CreateStringArray()批量创造对应类型的cJSON cJSON_AddItemToArray()
在指定Array后⾯增加Item cJSON_AddItemToObject()在指定Object后⾯增加Item
cJSON_AddItemToObjectCS()
在指定Object后⾯增加const Item
cJSON_AddItemReferenceToArray()
在指定Array后⾯增加Item引⽤
cJSON_DetachItemViaPointer()
通过指针从Array删除Item的引⽤
这个⾃⼰理解
cJSON_DetachItemFromArray()
从Array删除Item的引⽤
cJSON_DeleteItemFromArray()
从Array删除Item
cJSON_DetachItemFromObject()
从Object删除Item的引⽤
cJSON_DetachItemFromObjectCaseSensitive()⼤⼩写敏感的从Object删除Item的引⽤
cJSON_DeleteItemFromObject()
从Object删除Item
cJSON_DeleteItemFromObjectCaseSensitive()⼤⼩写敏感的从Object删除Item
cJSON_InsertItemInArray()
在Array指定位置插⼊Item
cJSON_ReplaceItemViaPointer()
使⽤指针替代Item
cJSON_ReplaceItemInArray()
替换Array的Item
cJSON_ReplaceItemInObject()
替换Object的Item
`cJSON_ReplaceItemInObjectCaseSensitive()⼤⼩写敏感的替换Object的Item
cJSON_Duplicate()
复制cJSON结构体
cJSON_Compare()
⽐较两个cJSON结构体
cJSON_Minify()
将格式化的字符串压缩
cJSON_AddNullToObject()
调⽤cJSON_AddItemToObject和cJSON_CreateNull cJSON_AddTrueToObject()
调⽤cJSON_AddItemToObject和cJSON_CreateTrue cJSON_AddFalseToObject()
调⽤cJSON_AddItemToObject和cJSON_CreateFalse cJSON_AddBoolToObject()
调⽤cJSON_AddItemToObject和cJSON_CreateBool cJSON_AddNumberToObject()
调⽤cJSON_AddItemToObject和cJSON_CreateNumber cJSON_AddStringToObject()
调⽤cJSON_AddItemToObject和cJSON_CreateString cJSON_AddRawToObject()
调⽤cJSON_AddItemToObject和cJSON_CreateRaw cJSON_SetIntValue()
设置int的值,同时也设置double的值
cJSON_SetNumberValue()
后台会调⽤cJSON_SetNumberHelper
cJSON_SetNumberHelper()
设置cJSON的number类型的值
cJSON_malloc()
cJSON的malloc函数,调⽤malloc函数
cJSON_free()
cJSON的free函数,调⽤free函数
cJSON ⼀些实现原理cJSON有九种类型
Invalid类型
False类型
True类型
Null类型
Number类型
String类型
Array类型
Object类型