安装
https://github.com/DaveGamble/cJSON
组包
#include <stdio.h>
#include "cJSON.h"
int main(){
// 创建dict结点
cJSON *root = cJSON_CreateObject();
// 添加string子节点
cJSON_AddItemToObject(root, "name", cJSON_CreateString("Jack (\"Bee\") Nimble"));
// 添加number子节点
cJSON_AddItemToObject(root, "age", cJSON_CreateNumber(20));
// 添加bool子节点
cJSON_AddItemToObject(root, "best", cJSON_CreateBool(cJSON_True));
// 添加bool子节点
cJSON_AddItemToObject(root, "worse", cJSON_CreateFalse());
// 添加NULL子节点
cJSON_AddItemToObject(root, "address", cJSON_CreateNull());
// 添加array
cJSON *string_array = cJSON_CreateArray();
cJSON_AddItemToObject(string_array,"hello",cJSON_CreateString("hello"));
cJSON_AddItemToObject(string_array,"world",cJSON_CreateString("world"));
cJSON_AddItemToObject(root,"string",string_array);
// 添加array
int nums[] = {
1,2,3,4,5,6};
cJSON *nums_array = cJSON_CreateIntArray(nums,sizeof(nums)/sizeof(int));
cJSON_AddItemToObject(root,"nums",nums_array);
// 格式化输出, 调用malloc
printf("%s\n",cJSON_Print(root));
// 非格式化输出, 调用malloc
printf("%s\n",cJSON_PrintUnformatted(root));
// 不调用malloc
char buffer[4096] = {
0};
cJSON_PrintPreallocated(root,buffer,sizeof(buffer),0);//0 非格式化, 1格式化
printf("%s\n",buffer);
// 删除节点, 如果直接调用cJSON_Delete删除某个节点, print的时候会出错的
cJSON_DeleteItemFromObjectCaseSensitive(root,"age");// 大小写敏感
// cJSON_DeleteItemFromObject// 大小写不敏感
// 更新节点
cJSON_ReplaceItemInObjectCaseSensitive(root,"name",cJSON_CreateString("小明"));// 大小写敏感
// cJSON_ReplaceItemInObject// 大小写不敏感
// 格式化输出, 调用malloc
printf("%s\n",cJSON_Print(root));
// 删除根节点
cJSON_Delete(root);
}
解包
#include <stdio.h>
#include "cJSON.h"
int main(){
char s[] = "{\"name\":\"Jack (\\\"Bee\\\") Nimble\",\"age\":20,\"best\":true,\"worse\":false,\"address\":null,\"string\":[\"hello\",\"world\"],\"nums\":[1,2,3,4,5,6]}";
cJSON *root, *object,