{
        "test": [1, "1111"]
}

格式如上所示,数组中不存放json对象,而是字符串或数字。通过调用cJSON_CreateString接口指定生成的json对象类型。

    cJSON *root;
    cJSON *Array;
    cJSON *objId;
    char *pStr = NULL;

    root = cJSON_CreateObject();
    Array = cJSON_CreateArray();
    objId = cJSON_CreateNumber(1);
    cJSON_AddItemToArray(Array, objId);
    objId = cJSON_CreateString("1111");
    cJSON_AddItemToArray(Array, objId);

    cJSON_AddItemToObject(root, "test", Array);

    pStr = cJSON_Print(root);

    printf("json is:\r\n%s\r\n", pStr);

解析的时候直接获取对象的sting

    char *str = "{\"test\":[\"0100\", \"0200#2\"]}";

    cJSON *root;
    cJSON *Array;

    root = cJSON_Parse(str);
    Array = cJSON_GetObjectItem(root, "test");
    cJSON *childNode;
    if((Array != NULL))
    {
        int arraySize = cJSON_GetArraySize(Array);
        printf("arraySize %d\n", arraySize);
        int i;
        for(i = 0; i < arraySize; i++)
        {
            childNode = cJSON_GetArrayItem(Array, i);
            if(childNode == NULL) continue;
            printf("childNode %s\n", childNode->valuestring);
        }

    }
    cJSON_Delete(root);

GitHub 加速计划 / cj / cJSON
10.45 K
3.16 K
下载
Ultralightweight JSON parser in ANSI C
最近提交(Master分支:2 个月前 )
424ce4ce This reverts commit 5b502cdbfb21fbe5f6cf9ffbd2b96e4281a741e6. Related to #860 4 个月前
32497300 - 5 个月前
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐