场景1:构造json格式数据
#include <stdio.h>
#include <stdlib.h>
#include "cJSON.h"
void create_json()
{
cJSON* root;
root = cJSON_CreateObject();
cJSON_AddStringToObject(root, "name", "zhangsan");
cJSON_AddStringToObject(root, "age", "18");
char* out;
out = cJSON_Print(root);
cJSON_Delete(root);
printf("%s\n", out);
free(out);
}
int main()
{
create_json();
return 0;
}
结果:
解析上面格式json:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "cJSON.h"
void parse_json(char *str)
{
if(strlen(str) == 0) return;
cJSON *json = cJSON_Parse(str);
if(json == NULL) return;
cJSON *node = cJSON_GetObjectItem(json, "name");
printf("name:%s\n", node->valuestring);
node = cJSON_GetObjectItem(json, "age");
printf("age:%s\n", node->valuestring);
cJSON_Delete(json);
}
int main (int argc, const char * argv[])
{
char str[1024] = "{\"name\":\"zhangsan\", \"age\":\"18\"}";
parse_json(str);
return 0;
}
结果:
场景2:构造json数组
#include <stdio.h>
#include <stdlib.h>
#include "cJSON.h"
void create_json()
{
cJSON *root, *dir1, *dir2;
root=cJSON_CreateArray();
cJSON_AddItemToArray(root, dir1=cJSON_CreateObject());
cJSON_AddStringToObject(dir1,"name","zhangsan");
cJSON_AddStringToObject(dir1,"age","18");
cJSON_AddItemToArray(root, dir2=cJSON_CreateObject());
cJSON_AddStringToObject(dir2,"name","lisi");
cJSON_AddStringToObject(dir2,"age","20");
char *out=cJSON_Print(root);
printf("%s\n", out);
cJSON_Delete(root);
free(out);
}
int main (int argc, const char * argv[])
{
create_json();
return 0;
}
结果:
解析上面json格式数据:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "cJSON.h"
void parse_json(char *str)
{
if(strlen(str) == 0) return;
cJSON *json = cJSON_Parse(str);
if(json == NULL) return;
int size = cJSON_GetArraySize(json);
int i = 0;
for(i = 0; i < size; ++i)
{
cJSON *pSub = cJSON_GetArrayItem(json, i);
cJSON *node = cJSON_GetObjectItem(pSub, "name");
printf("name:%s\n", node->valuestring);
node = cJSON_GetObjectItem(pSub, "age");
printf("age:%s\n", node->valuestring);
}
cJSON_Delete(json);
}
int main (int argc, const char * argv[])
{
char str[1024] = "[{\"name\":\"zhangsan\", \"age\":\"18\"},{\"name\":\"lisi\",\"age\":\"20\"}]";
parse_json(str);
return 0;
}
结果:
场景3:构造json组
#include <stdio.h>
#include <stdlib.h>
#include "cJSON.h"
void create_json()
{
cJSON *root,*subdir,*dir1;
root=cJSON_CreateObject();
cJSON_AddItemToObject(root,"type1",subdir = cJSON_CreateArray());
int i = 0;
for(i = 0; i < 3; ++i)
{
cJSON_AddItemToObject(subdir,"dira",dir1=cJSON_CreateObject());
cJSON_AddStringToObject(dir1,"name","zhangsan");
cJSON_AddStringToObject(dir1,"age","18");
}
cJSON_AddItemToObject(root,"type2",subdir = cJSON_CreateArray());
for(i = 0; i < 3; ++i)
{
cJSON_AddItemToObject(subdir,"dira",dir1=cJSON_CreateObject());
cJSON_AddStringToObject(dir1,"name","lisi");
cJSON_AddStringToObject(dir1,"age","19");
}
char *out=cJSON_Print(root);
printf("%s\n", out);
cJSON_Delete(root);
free(out);
}
int main (int argc, const char * argv[])
{
create_json();
return 0;
}
结果:
解析上面的json格式数据:
#include <stdlib.h>
#include <string.h>
#include "cJSON.h"
void parse_json(char *str)
{
if(strlen(str) == 0) return;
cJSON *json = cJSON_Parse(str);
if(json == NULL) return;
cJSON* node_group = cJSON_GetObjectItem(json, "type1");
cJSON* child_list = node_group->child;
while (child_list != NULL)
{
char name[1024] = "";
char age[1024] = "";
sprintf(name, cJSON_GetObjectItem(child_list, "name")->valuestring);
sprintf(age, cJSON_GetObjectItem(child_list, "age")->valuestring);
printf("name:%s\n", name);
printf("age:%s\n", age);
child_list = child_list->next;
}
cJSON_Delete(json);
}
int main (int argc, const char * argv[])
{
char str[1024] = "{\"type1\":[{\"name\":\"zhangsan\", \"age\":\"18\"},{\"name\":\"lisi\",\"age\":\"20\"}]}";
parse_json(str);
return 0;
}
结果:
场景4:构造json组
#include <stdio.h>
#include <stdlib.h>
#include "cJSON.h"
void create_json()
{
cJSON* root;
root = cJSON_CreateObject();
cJSON_AddStringToObject(root, "age", "20");
cJSON *client_public_ip = cJSON_CreateArray();
cJSON_AddItemToArray(client_public_ip, cJSON_CreateString("zhangsan"));
cJSON_AddItemToArray(client_public_ip, cJSON_CreateString("lisi"));
cJSON_AddItemToObject(root, "name", client_public_ip);
char *s = cJSON_PrintUnformatted(root);
printf("%s\n", s);
cJSON_Delete(root);
free(s);
}
int main (int argc, const char * argv[])
{
create_json();
return 0;
}
结果:
解析上图json格式数据:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "cJSON.h"
void parse_json(char *str)
{
if(strlen(str) == 0) return;
cJSON *json = cJSON_Parse(str);
if(json == NULL) return;
cJSON* node = cJSON_GetObjectItem(json, "name");
int array_size = cJSON_GetArraySize(node);
int iCnt = 0;
for (iCnt = 0; iCnt < array_size; ++iCnt)
{
char name[1024] = "";
cJSON* pSub = cJSON_GetArrayItem(node, iCnt);
if (NULL == pSub) continue;
sprintf(name, pSub->valuestring);
printf("name:%s\n", name);
}
cJSON_Delete(json);
}
int main (int argc, const char * argv[])
{
char str[1024] = "{\"age\":\"20\", \"name\":[\"zhangsan\", \"lisi\"]}";
parse_json(str);
return 0;
}
结果:
源码文件下载:
https://download.csdn.net/download/xiadeliang1111/19564471
参考: