首先需要下载封装好的cjson包包括 cjson.h cjson.c

为方便大家我已上传

下载地址如下

http://download.csdn.net/detail/wuheshi/8353075

编程时加入头文件cjson.h 就可以调用cjson.c里面的函数

打包json数据和解析json数据例子如下:

简单编码实例如下


#include "../../include/myhead.h"
#include "../../include/cJSON.h"

/*对json数据的解析取出其中的有用信息*/
int undo_cjson_pack(char text[],int id,int ctlcmd)  
{  
    cJSON *json, *json_value;  
    // 解析数据包  
    json = cJSON_Parse(text);  
    if (!json)  
    {  
        printf("Error before: [%s]\n",cJSON_GetErrorPtr());      //判断是否是json数据
    }  
    else  
    {  
        // 解析ID值  
        json_value = cJSON_GetObjectItem( json , "ID");  
        if( json_value->type == cJSON_Number )  
        {  
            // 从valueint中获得结果  
            printf("value:%d\r\n",json_value->valueint);
            id = json_value->valueint  ;
        }  
        // 解析 控制量
        json_value = cJSON_GetObjectItem( json , "ctl_cmd");  
        if( json_value->type == cJSON_Number )  
        {  
            // valuestring中获得结果  
            printf("cmd:%d\r\n",json_value->valueint);  
             ctlcmd =json_value->valueint;
            //  printf("%s\n",cmd);     
        }  
        // 释放内存空间  
        cJSON_Delete(json);  
    }  
    return 0;  
}  

/*打包数据键值对成json格式再传给字符串*/
char * do_cjson_pack(int idnum,char *str)  
{  
    // 创建JSON Object  
    cJSON *root = cJSON_CreateObject();  
    // 加入节点(键值对),节点名称为ID,节点值为123.4  
    cJSON_AddNumberToObject(root,"ID",idnum);
    cJSON_AddStringToObject(root,"ctl_cmd",str);
    // 打印JSON数据包  
    char *out = cJSON_Print(root);  
    printf("%s\n",out);  
    // 释放内存  
    cJSON_Delete(root);       
    return out;  
}  


/*
int main()
{
      char text[] = "{\"ctl_cmd\":\6,\"ID\":1}";  
      char *putout = NULL;
      int cmd_str = 1;
      int num = 9;
      
      putout = do_cjson_pack(num,cmd_str) ;
      undo_cjson_pack(text);  
    
      printf("%s\n",putout);
      free(putout);
      return 0;

}

*/


程序有点小改动,运行时有错误的话 可能数据格式有点问题,这里解释作用

GitHub 加速计划 / cj / cJSON
10.45 K
3.16 K
下载
Ultralightweight JSON parser in ANSI C
最近提交(Master分支:2 个月前 )
424ce4ce This reverts commit 5b502cdbfb21fbe5f6cf9ffbd2b96e4281a741e6. Related to #860 4 个月前
32497300 - 5 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐