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 对象占用的内存
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值