c操作json数据

1、json库下载

GitHub - DaveGamble/cJSON: Ultralightweight JSON parser in ANSI C

cmake .编译、 make编译,保留cJSON.h和libcjson.a文件

项目CMakeLists.txt引入:

include_directories("/Users/sumengnan/CLionProjects/testc/include")
link_directories("/Users/sumengnan/CLionProjects/testc/lib")
target_link_libraries(testc libcjson.a)

2、json对象转字符串


#include "cJSON.h"
    //json转字串
    //1、创建JSONObject
    cJSON *root = cJSON_CreateObject();
    //相似的创建json对象还有如下……
//    cJSON_CreateArray();
//    cJSON_CreateNull();
//    cJSON_CreateString();
//    cJSON_CreateNumber();

    //2、创建子object
    //创建json string对象
    cJSON_AddItemToObject(root,"username", cJSON_CreateString("sumengnan"));
    cJSON_AddStringToObject(root,"pass","123456");
    //创建json数组对象
    cJSON *array = cJSON_CreateArray();
    cJSON_AddItemToArray(array, cJSON_CreateString("a"));
    cJSON_AddItemToArray(array, cJSON_CreateString("b"));
    cJSON_AddItemToArray(array, cJSON_CreateString("c"));
    cJSON_AddItemToObject(root,"letter",array);

    char *string = cJSON_Print(root);
    printf("%s\n",string);
    //释放内存
    cJSON_Delete(root);

执行结果:

{

"username": "sumengnan",

"pass": "123456",

"letter": ["a", "b", "c"]

}

3、字符串转json对象

char *a="{\"errNo\":\"403\",\"data\": { \"redDot\": [ \"a\",\"b\",\"c\"  ], \"newWord\": [  ], \"layer\": [  ] }}";
cJSON *root = cJSON_Parse(a);
//获取errNo对象
cJSON *errNoJson = cJSON_GetObjectItem(root, "errNo");
printf("errNoJson:%s\n",cJSON_GetStringValue(errNoJson));

//获取data->redDot数组对象
cJSON *dataJson = cJSON_GetObjectItem(root, "data");
cJSON *redDotJson = cJSON_GetObjectItem(dataJson, "redDot");
for(int i=0;i<cJSON_GetArraySize(redDotJson);i++){
    cJSON *redDotItemJson = cJSON_GetArrayItem(redDotJson, i);
    printf("redDotJson:%d:%s\n",i, cJSON_GetStringValue(redDotItemJson));
}

执行结果:

errNoJson:403

redDotJson:0:a

redDotJson:1:b

redDotJson:2:c

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值