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

相关推荐

  1. CJson 使用 - 解析Object结构

    2023-12-24 12:06:02       63 阅读
  2. HIVE:使用get_json_object解析json对象

    2023-12-24 12:06:02       28 阅读
  3. Objective-C项目结构

    2023-12-24 12:06:02       52 阅读
  4. C#使用HtmlAgilityPack解析HTML结构

    2023-12-24 12:06:02       53 阅读
  5. Caché Objects | 第四章 | Registered Objects使用

    2023-12-24 12:06:02       45 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-24 12:06:02       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-24 12:06:02       106 阅读
  3. 在Django里面运行非项目文件

    2023-12-24 12:06:02       87 阅读
  4. Python语言-面向对象

    2023-12-24 12:06:02       96 阅读

热门阅读

  1. Lombok详细使用说明及其注意事项和Lombok注解详解

    2023-12-24 12:06:02       50 阅读
  2. windows vs cmake项目+vcpkg

    2023-12-24 12:06:02       69 阅读
  3. 论文速递|Management Science 11月文章合集(上)

    2023-12-24 12:06:02       43 阅读
  4. mysql参数配置binlog

    2023-12-24 12:06:02       48 阅读
  5. 【FLink消费Kafka之FlinkConsumer到KafkaSource的转变】

    2023-12-24 12:06:02       68 阅读
  6. Golang make vs new

    2023-12-24 12:06:02       60 阅读
  7. docker 安装mysql 8.0.35

    2023-12-24 12:06:02       47 阅读
  8. 力扣labuladong——一刷day78

    2023-12-24 12:06:02       65 阅读
  9. python自动开发,基础2

    2023-12-24 12:06:02       48 阅读
  10. Vue 3 表单处理精讲:打造响应式注册表单的艺术

    2023-12-24 12:06:02       54 阅读
  11. ClickHouse(19)ClickHouse集成Hive表引擎详细解析

    2023-12-24 12:06:02       47 阅读