• C语言解析json类型数据


    转自:http://buluzhai.iteye.com/blog/845404   首先感谢作者!!

    我使用的是cJSON:http://sourceforge.net/projects/cjson/ 

    先看json的数据结构 
    c中没有对象,所以json数据是采用链表存储的 

    C代码如下:

     1 typedef struct cJSON {
     2     struct cJSON *next,*prev;    // 数组 对象数据中用到
     3     struct cJSON *child;        // 数组 和对象中指向子数组对象或值
     4 
     5     int type;            // 元素的类型,如是对象还是数组
     6 
     7     char *valuestring;            // 如果是字符串
     8     int valueint;                // 如果是数值
     9     double valuedouble;            // 如果类型是cJSON_Number
    10 
    11     char *string;                // The item's name string, if this item is the child of, or is in the list of subitems of an object.
    12 } cJSON;

    比如你有一个json数据如下:

        

     1 {
     2     "name": "Jack ("Bee") Nimble", 
     3     "format": {
     4         "type":       "rect", 
     5         "width":      1920, 
     6         "height":     1080, 
     7         "interlace":  false, 
     8         "frame rate": 24
     9     }
    10 }

    那么你可以 
    1:讲字符串解析成json结构体。 

    C代码:
        
    1 cJSON *root = cJSON_Parse(my_json_string);

    2:获取某个元素 

    C代码:
    1 cJSON *format = cJSON_GetObjectItem(root,"format");
    2 int framerate = cJSON_GetObjectItem(format,"frame rate")->valueint;

    3:讲json结构体转换成字符串

    C代码:
    1 char *rendered=cJSON_Print(root);

    4:删除 

    C代码:
        
    1 cJSON_Delete(root);

    5:构建一个json结构体 

    C代码:
        
    1 cJSON *root,*fmt;
    2 root=cJSON_CreateObject();    
    3 cJSON_AddItemToObject(root, "name", cJSON_CreateString("Jack ("Bee") Nimble"));
    4 cJSON_AddItemToObject(root, "format", fmt=cJSON_CreateObject());
    5 cJSON_AddStringToObject(fmt,"type",        "rect");
    6 cJSON_AddNumberToObject(fmt,"width",        1920);
    7 cJSON_AddNumberToObject(fmt,"height",        1080);
    8 cJSON_AddFalseToObject (fmt,"interlace");
    9 cJSON_AddNumberToObject(fmt,"frame rate",    24);
  • 相关阅读:
    Twitter网站架构学习笔记
    优化和架构之服务切分
    现代浏览器的工作原理
    可伸缩性原则
    图解:2013年百度搜索引擎工作原理
    构建的可伸缩性和达到的性能:一个虚拟座谈会
    提升可伸缩性的8项最佳实践
    Oracle odbc配置
    Oracle Error
    java与java web数组括号的不同
  • 原文地址:https://www.cnblogs.com/cy568searchx/p/4482734.html
Copyright © 2020-2023  润新知