cJSON(Linux C)

cJSON官網:http://sourceforge.net/projects/cjson/

下面是使用cJSON的例子:

/*===============================================================
*   Copyright (C) 2015 All rights reserved.
*   
*   文件名稱:test_cjson.c
*   創 建 者:Gavin (E-mail:[email protected])
*   創建日期:2015年06月1日
*   描    述:C語言JSON簡單用例
*
================================================================*/
#include <stdio.h>
#include <stdlib.h>
#include "cJSON.h"

void create_cjson(char **out)
{
    cJSON *root, *fmt;

    /* 創建一個json */
    root = cJSON_CreateObject();
    /* 定義json root */
    cJSON_AddItemToObject(root, "USR_INFO", fmt = cJSON_CreateObject());
    /* 成員 int型 */
    cJSON_AddNumberToObject(fmt, "usrid", 7);
    /* 成員 string型 */
    cJSON_AddStringToObject(fmt, "E-mail", "[email protected]");
    /* 將JSON轉換成string型 */
    *out = cJSON_Print(root);
    /* 刪除JSON佔用內存 */
    cJSON_Delete(root); 
}

void parse_cjson(char *out)
{
    cJSON *out_json, *root, *format;
    char *parse_result;
    char *E_mail;
    int id;

    /* 將string型JSON進行轉換 */
    out_json = cJSON_Parse(out);
    if (!out_json) {
        printf("Error before: [%s]\n",cJSON_GetErrorPtr());
        return;
    } else {
        format = cJSON_GetObjectItem(out_json, "USR_INFO");
        /* 獲取usrid、E-mail信息 */
        id = cJSON_GetObjectItem(format, "usrid")->valueint;
        E_mail = cJSON_GetObjectItem(format, "E-mail")->valuestring;
    }

    printf("\n解析結果:\n");
    printf("%d\n", id);
    printf("%s\n", E_mail);
    cJSON_Delete(out_json);
}

int main(int argc, const char *argv[])
{
    char *out = NULL;
    /* 構建json */
    create_cjson(&out);
    printf("構成JSON:\n%s\n",out);    
    /* 解析json */
    parse_cjson(out);

    free(out);

    return 0;
}

/**
 * 編譯:
 * gcc test_json.c cJSON.c -o test_json -lm
 * (PS:cJSON.c cJSON.h從下載包提取出來)
 */

結果:

構成JSON:
{
    "USR_INFO":{
        "usrid":7   
        "E-mail":gavinlu1015@gmail.com
    }
}

解析結果:
7
gavinlu1015@gmail.com
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章