版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/baidu_33232390/article/details/68923572
代码简单实例:
#include <unistd.h>
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <string.h>
#include "../cjson/cJSON.h"
int main()
{
/*Cjson数据包的创建*/
// 创建JSON Object
cJSON *root = cJSON_CreateObject();
cJSON *info = cJSON_CreateObject();
// 加入节点(键值对),节点名称为action,值为666
cJSON_AddNumberToObject(root,"action",666);
/*在root json数据包中增加一个子项目info。相当于结构体中嵌套子结构体*/
cJSON_AddItemToObject(root,"info",info);
/*在info json数据包加入字符串节点*/
cJSON_AddStringToObject(info,"username","sky");
cJSON_AddStringToObject(info,"password","12345678");
/*将root json类型转换为字符串类型,格式不变,节省空间,可读性差一些*/
char *out = cJSON_PrintUnformatted(root);
printf("json: \n \t%s\n\n\n",out);
/*Cjson数据包的解析*/
cJSON *root_parse = cJSON_Parse(out);
/*将root_parse数据包转换字符串形式并转换显示格式,易读,占用空间大*/
char *outtest = cJSON_Print(root_parse);
printf( "Data: \n \t%s\n\n\n", outtest);
/*分别提取数据包中各个节点*/
cJSON *action_s = cJSON_GetObjectItem(root_parse, "action");
cJSON *info_s = cJSON_GetObjectItem(root_parse, "info");
cJSON *user = cJSON_GetObjectItem(info_s,"username");
cJSON *password = cJSON_GetObjectItem(info_s,"password");
/*获取节点名称及对应的值*/
int value = action_s->valueint;
char *name_a = action_s->string;
printf("%s: %d\n",name_a,value);
char *name_u = user->string;
char* user_name = user->valuestring;
printf("%s: %s\n",name_u,user_name);
char *name_p = password->string;
char * pass_word = password->valuestring;
printf("%s: %s\n",name_p,pass_word);
return 0;
}
运行此程序需要下载cjson库(自行下载),使用cmake编译。CMakeLists.txt文件如下:
1,此CMakeLists.txt放在cjson文件夹中
aux_source_directory(. SRC_LIB_DIR)
add_library(cjsonfunc ${SRC_LIB_DIR})
2,此CMakeLists.txt放在同上面程序一个目录
cmake_minimum_required(VERSION 2.8)
project(main)
add_subdirectory(cjson)
add_executable(main json_test.c)
target_link_libraries(main cjsonfunc)
target_link_libraries(main m)
运行结果如下:
Cjson的一些函数简介:
具体详细使用简介网址:
http://www.ganimede.ro/help/abljson/files/jsonParser-p.html