使用cJSON库打包json数据及解析json数据

版权声明:本文为博主原创文章,未经博主允许不得转载。 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

猜你喜欢

转载自blog.csdn.net/baidu_33232390/article/details/68923572