cjson--生成/解析json文件、cjson 结构体(二)

json文件格式、常见c/c++的json库

cjson–生成/解析json文件、cjson 结构体

QT中的json


第二篇 cjson–生成/解析json文件、cjson 结构体

C语言json开源解析库-cjson – https://sourceforge.net/projects/cjson/

生成json文件

  1. 创建一个json对象
    cJSON* cJSON_CreateObject(void)
    
  2. 往json对象中添加数据成员
    void cJSON_AddItemToObject(
    	DCJSON* pbject,       //json对象
    	const char* string,   //key值…
    	cJSON *item           //value在(int,string,array,obj)
    );
    
  3. 创建一个整型值
    cJSON* cJSON_CreateNumber(double num);
    
  4. 创建一个字符串
    cJSON* cJSON_CreateString(const char* string);
    
  5. 创建一个json数组
    cJSON* cJSON_CreateArray(void); //--空数组
    
  6. 创建默认有count个整形值的json数组
    cJSON* cJSON_CreateIntArray(const int* numbers, int count);
    int arry[]={8, 3, 4, 5, 6};
    cJSON_CreatelntArray(arry, 5);
    
  7. 往json教组中添加数据成员
    void cJSON_AddItemToArray(cJSON* array,CJSON* item);
    
  8. 释放json结构指针
    void cJSON_Delete(CJSON* c);
    
  9. 将json结构转化为字符串 — (写到文件中)
    char* cJSON_Print(cJSON* item);
    //返回值需要使用free释放
    FILE* fe=fopen();
    fwrite();
    fclose();
    

解析json文件

  1. 将字符串解析为JSON结构

    cJSON* cJSON_Parse(const char* value);//返回值需要使用CJSON_Delete释放
    
  2. 根据键值查找json节点

    cJSON* cJSON_GetObjectItem(
        cJSON* object,     //当前json对象
        const char* string  //key值
    );
    
  3. 获取json数组中元素的个数

    int cJSON_GetArraySize(cJSON* array);
    
  4. 根据数组下标找到对应的数组元素

    cJSON* cJSON_CetArrayItem(cJSON* array,int index);
    
  5. 判新是否有可以值对应的键值对, 判断key值是否存在

    int cJSON_HasObjectItem(cJSON* object,const char* string);
    

cJSON结构体

  • #define cJSON_Invalid(0)
    #define cJSON_False(1<<0)
    #define cJSON_True(1<<1)
    #define cJSON_NULL(1<<2)
    #define cJSON_Number(1<<3)
    #define cJSON_String(1<<4)
    #define cJSON_Array(1<<5)l
    #define cJSON_Object(1<6)
    #define cJSON_Raw(1<<7)
    
    /*The cJSON structure:*/
    typedef struct cJSON
    {
        struct cJSON *next;     /* 遍历数组或对象链的前向链表指针*/
        struct cJSON *prev;    /* 遍历数组或对象链的后向链表指针*/
        struct cJSON *child;   /*数组或对象的孩子节点*/
        int type;                       /* key的类型*/
        char *valuestring;      /*字符串值*/
        int valueint;                /* 整数值*/
       double valuedouble;    /* 浮点数值*/
       char *string;        /* key的名字*/
    }JSON;
    

代码示例

参见码云项目:https://gitee.com/orange-ren/SystemCode/tree/master/cjson%E4%BD%BF%E7%94%A8

你可能感兴趣的:(linux,c/c++开发)