当前位置: 首页 > news >正文

mqtt协议(cJSON格式举例)

下面是一个使用 cJSON 库构建 JSON 数据的示例,展示如何创建各种 JSON 结构(对象、数组、嵌套结构),并将其转换为字符串:

#include <stdio.h>
#include <stdlib.h>
#include "cJSON.h"  // 假设已包含cJSON头文件int main() {// 创建根JSON对象cJSON *root = cJSON_CreateObject();// 添加基本类型字段cJSON_AddNumberToObject(root, "id", 12345);cJSON_AddStringToObject(root, "name", "John Doe");cJSON_AddBoolToObject(root, "isStudent", 1);  // 1表示true// 创建并添加数组cJSON *hobbies = cJSON_CreateArray();cJSON_AddItemToObject(root, "hobbies", hobbies);cJSON_AddItemToArray(hobbies, cJSON_CreateString("Reading"));cJSON_AddItemToArray(hobbies, cJSON_CreateString("Swimming"));cJSON_AddItemToArray(hobbies, cJSON_CreateString("Programming"));// 创建并添加嵌套对象cJSON *contact = cJSON_CreateObject();cJSON_AddItemToObject(root, "contact", contact);cJSON_AddStringToObject(contact, "email", "john@example.com");cJSON_AddStringToObject(contact, "phone", "+1-123-456-7890");// 创建并添加包含对象的数组cJSON *friends = cJSON_CreateArray();cJSON_AddItemToObject(root, "friends", friends);// 向friends数组添加对象cJSON *friend1 = cJSON_CreateObject();cJSON_AddStringToObject(friend1, "name", "Alice");cJSON_AddNumberToObject(friend1, "age", 25);cJSON_AddItemToArray(friends, friend1);cJSON *friend2 = cJSON_CreateObject();cJSON_AddStringToObject(friend2, "name", "Bob");cJSON_AddNumberToObject(friend2, "age", 28);cJSON_AddItemToArray(friends, friend2);// 将JSON结构转换为字符串char *jsonString = cJSON_Print(root);if (jsonString) {printf("生成的JSON字符串:\n%s\n", jsonString);free(jsonString);  // 释放内存}// 释放cJSON对象cJSON_Delete(root);return 0;
}

生成的 JSON 格式示例:

{ "id": 12345, "name": "John Doe", "isStudent": true, "hobbies": ["Reading", "Swimming", "Programming"], "contact": { "email": "john@example.com", "phone": "+1-123-456-7890" }, "friends": [ { "name": "Alice", "age": 25 }, { "name": "Bob", "age": 28 } ] }

关键 API 说明:

  1. 创建 JSON 结构

    • cJSON_CreateObject():创建 JSON 对象(花括号{}
    • cJSON_CreateArray():创建 JSON 数组(方括号[]
    • cJSON_CreateNumber():创建数值类型
    • cJSON_CreateString():创建字符串类型
    • cJSON_CreateBool():创建布尔类型
  2. 添加数据到对象

    • cJSON_AddItemToObject():添加任意类型的项到对象
    • cJSON_AddNumberToObject():添加数值项(简化版)
    • cJSON_AddStringToObject():添加字符串项(简化版)
  3. 添加数据到数组

    • cJSON_AddItemToArray():添加项到数组
  4. 转换与释放

    • cJSON_Print():将 JSON 结构转换为格式化字符串
    • cJSON_PrintUnformatted():转换为无格式字符串(节省空间)
    • cJSON_Delete():释放 JSON 对象占用的内存
http://www.xdnf.cn/news/609931.html

相关文章:

  • 交换机的连接方式堆叠和级联
  • 3D个人简历网站 6.弹出框
  • 基于OAuth2-proxy和Keycloak为comfyui实现SSO
  • 深入解析Spring Boot与Redis集成:高性能缓存实践
  • 软件工程(八):UML类图的几种关系
  • Redis-RedisShake数据迁移工具
  • Linux--初识文件系统fd
  • Python的FastApi随笔记
  • MySQL强化关键_016_存储引擎
  • 每天分钟级别时间维度在数据仓库的作用与实现——以Doris和Hive为例(开箱即用)
  • 第四十七节:图像分割-分水岭算法
  • canal实现mysql数据同步
  • JavaWeb面试题 (一)
  • window 显示驱动开发-视频内存供应和回收(三)
  • STM32F103_Bootloader程序开发01 - 什么是IAP?跟OTA有什么关系?
  • 关于 Web 风险点原理与利用:6. 逻辑风险点
  • 跨平台三维可视化与图形库.VTK图形库.
  • CATIA高效工作指南——常规配置篇(三)
  • SAP在化工行业的数字化转型:无锡哲讯科技的赋能实践
  • 微气象在线监测装置:精准感知环境变化的科技之眼
  • win32相关(句柄表)
  • 【Mini-F5265-OB开发板试用测评】2、关于platform.c中的串口号初始化修改的建议
  • GO语言学习(九)
  • Flask项目打开总是上一个项目的网页
  • 短视频与直播场景下的美颜SDK优化方案:滤镜与特效如何平衡性能与美感?
  • 精益数据分析(80/126):病毒式传播系数实战计算与增长策略优化
  • 中电金信X中远海科推出“银航宝”解决方案,共绘航运金融新图景
  • Python Scikit-Learn核心流程
  • Vue3中的TSX:用函数式思维构建现代组件的实践指南
  • 基于vite构建的vue项目添加路由时注意要利用import.meta.glob映射构建生成后的路径