CJson 使用 - 解析Object结构

简介

准备在开发板中使用json结构传送数据, 选用了cJson, 现在看下cJson的使用吧

步骤

下载

git clone https://github.com/DaveGamble/cJSON
或者直接压缩包下载也行, 毕竟国内有时候下载不下来

Qt 中使用cJson

在下载的cJson 目录中加入cJson.pri, 内容如下
INCLUDEPATH += $$PWD
HEADERS += \
    $$PWD/cJSON.h \
    $$PWD/cJSON_Utils.h \
    $$PWD/cJSON_util.h

SOURCES += \
    $$PWD/cJSON.c \
    $$PWD/cJSON_Utils.c

创建一个Qt工程, .pro中加入cJson.pri

例如 include(E:\workspace\cJson\cJSON\cJson.pri)

json结构解析代码
	QByteArray jsonData = "
		{
	"start_x": 1,
	"start_y": 2,
	"width": 100,
	"height": 100,
	"img_data": [2,3,4,5]
}
	";
cJSON *json = cJSON_Parse((const char*)jsonData.data());
    if (NULL == json)
    {
        logger("parse failed!");
        return;
    }
    cJSON *tempJson = json->child;
    QString printString;
    /* 打印一下最外层的json数据 */
    do
    {
        printString.append(QString("name: %1, ").arg(QString::fromStdString(tempJson->string))); // 打印名称
        switch (tempJson->type)
        {
        case cJSON_Invalid:
            printString.append(QString("cJSON_Invalid"));
            break;
        case cJSON_False:
            printString.append(QString("cJSON_False"));
            break;
        case cJSON_True   :
            printString.append(QString("cJSON_True"));
            break;
        case cJSON_NULL   :
            printString.append(QString("cJSON_NULL"));
            break;
        case cJSON_Number :
            printString.append(QString("cJSON_Number, %1").arg(tempJson->valueint));
            break;
        case cJSON_String :
            printString.append(QString("cJSON_String, %1").arg(QString::fromStdString(tempJson->valuestring)));
            break;
        case cJSON_Array  :
            printString.append(QString("cJSON_Array"));
            break;
        case cJSON_Object :
            printString.append(QString("cJSON_Object"));
            break;
        case cJSON_Raw    :
            printString.append(QString("cJSON_Raw"));
            break;
        default:
            break;
        }
        logger(printString);
        printString.clear();
        tempJson = tempJson->next;
    } while(tempJson);


    delete json;
    json = NULL;
测试 json 结构

{
“start_x”: 1,
“start_y”: 2,
“width”: 100,
“height”: 100,
“img_data”: [4, 3, 2, 1]
}

打印信息

name: start_x, cJSON_Number, 1
name: start_y, cJSON_Number, 2
name: width, cJSON_Number, 100
name: height, cJSON_Number, 100
name: img_data, cJSON_Array

你可能感兴趣的:(嵌入式吧,CJson)