博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
cJONS序列化工具解读三(使用案例)
阅读量:5101 次
发布时间:2019-06-13

本文共 2768 字,大约阅读时间需要 9 分钟。

 cJSON使用案例

由了解了cJSON的数据结构,接口以及实现之后,那么我们来举例说明其使用。

本例子是一个简单的学生信息表格管理,我们通过键值对的方式向json中增加元素信息。

然后可以格式化输出结果,也能够反向的由字符串输出生成原cJSON对象。

int Test_cJSON(){    cJSON* pRoot = cJSON_CreateObject();    cJSON* pArray = cJSON_CreateArray();    cJSON_AddItemToObject(pRoot, "students_info", pArray);    char* szOut = cJSON_Print(pRoot);    cJSON* pItem = cJSON_CreateObject();    cJSON_AddStringToObject(pItem, "name", "chenzhongjing");    cJSON_AddStringToObject(pItem, "sex", "male");    cJSON_AddNumberToObject(pItem, "age", 28);    cJSON_AddItemToArray(pArray, pItem);    pItem = cJSON_CreateObject();    cJSON_AddStringToObject(pItem, "name", "fengxuan");    cJSON_AddStringToObject(pItem, "sex", "male");    cJSON_AddNumberToObject(pItem, "age", 24);    cJSON_AddItemToArray(pArray, pItem);    pItem = cJSON_CreateObject();    cJSON_AddStringToObject(pItem, "name", "tuhui");    cJSON_AddStringToObject(pItem, "sex", "male");    cJSON_AddNumberToObject(pItem, "age", 22);    cJSON_AddItemToArray(pArray, pItem);    char* szJSON = cJSON_Print(pRoot);    cout << szJSON << endl;    cJSON_Delete(pRoot);    //free(szJSON);    pRoot = cJSON_Parse(szJSON);    pArray = cJSON_GetObjectItem(pRoot, "students_info");    if (NULL == pArray)    {        return -1;    }    int iCount = cJSON_GetArraySize(pArray);    for (int i = 0; i < iCount; ++i)    {        cJSON* pItem = cJSON_GetArrayItem(pArray, i);        if (NULL == pItem)        {            continue;        }        string strName = cJSON_GetObjectItem(pItem, "name")->valuestring;        string strSex = cJSON_GetObjectItem(pItem, "sex")->valuestring;        int iAge = cJSON_GetObjectItem(pItem, "age")->valueint;    }    cJSON_Delete(pRoot);    free(szJSON);}

亦或是对于格式化的字符串,交给cJSON管理,自动识别,产生类型输出。

/* Parse text to JSON, then render back to text, and print! */void doit(char *text){    char *out; cJSON *json;    json = cJSON_Parse(text);    if (!json) { printf("Error before: [%s]\n", cJSON_GetErrorPtr()); }    else    {        out = cJSON_Print(json);        cJSON_Delete(json);        printf("%s\n", out);        free(out);    }}/* Read a file, parse, render back, etc. */void dofile(char *filename){    FILE *f; long len; char *data;    f = fopen(filename, "rb");    assert(f);    fseek(f, 0, SEEK_END);     len = ftell(f);     fseek(f, 0, SEEK_SET);    data = (char*)malloc(len + 1);    memset(data, 0, sizeof(char)*(len + 1));    fread(data, 1, len, f);     printf("%s", data);    fclose(f);    doit(data);    free(data);}
int main(){    char text1[] = "{\n\"name\": \"Jack (\\\"Bee\\\") Nimble\", \n\"format\": {\"type\":       \"rect\", \n\"width\":      1920, \n\"height\":     1080, \n\"interlace\":  false,\"frame rate\": 24\n}\n}";   doit(text1);   return 0;
}

 

转载于:https://www.cnblogs.com/lang5230/p/5507532.html

你可能感兴趣的文章
第二阶段冲刺-01
查看>>
BZOJ1045 HAOI2008 糖果传递
查看>>
JavaScript 克隆数组
查看>>
python3 生成器与迭代器
查看>>
digitalocean --- How To Install Apache Tomcat 8 on Ubuntu 16.04
查看>>
【题解】[P4178 Tree]
查看>>
cer证书签名验证
查看>>
【深度学习】caffe 中的一些参数介绍
查看>>
QML学习笔记之一
查看>>
App右上角数字
查看>>
小算法
查看>>
新作《ASP.NET MVC 5框架揭秘》正式出版
查看>>
WPF中实现多选ComboBox控件
查看>>
读构建之法第四章第十七章有感
查看>>
Windows Phone开发(4):框架和页 转:http://blog.csdn.net/tcjiaan/article/details/7263146
查看>>
python asyncio 异步实现mongodb数据转xls文件
查看>>
TestNG入门
查看>>
【ul开发攻略】HTML5/CSS3菜单代码 阴影+发光+圆角
查看>>
IOS-图片操作集合
查看>>
IO—》Properties类&序列化流与反序列化流
查看>>