C语言中封装JSON数组对象

在C语言中处理JSON数组对象,你可以使用一些流行的JSON库,如 cJSON、Jansson 或 json-c。下面我将以 cJSON 为例,展示如何创建、封装和处理JSON数组对象。

使用 cJSON 库

首先,你需要下载并包含 cJSON 库。cJSON 是一个轻量级的C语言JSON解析器。

示例代码

#include <stdio.h>
#include <stdlib.h>
#include "cJSON.h"

int main() {
    // 创建一个JSON数组
    cJSON *json_array = cJSON_CreateArray();
    
    if (json_array == NULL) {
        fprintf(stderr, "Failed to create JSON array\n");
        return EXIT_FAILURE;
    }
    
    // 向数组中添加不同类型的元素
    cJSON_AddItemToArray(json_array, cJSON_CreateString("Apple"));
    cJSON_AddItemToArray(json_array, cJSON_CreateString("Banana"));
    cJSON_AddItemToArray(json_array, cJSON_CreateNumber(42));
    cJSON_AddItemToArray(json_array, cJSON_CreateBool(1)); // true
    
    // 创建一个嵌套的对象并添加到数组中
    cJSON *nested_object = cJSON_CreateObject();
    cJSON_AddStringToObject(nested_object, "name", "Charlie");
    cJSON_AddNumberToObject(nested_object, "age", 30);
    cJSON_AddItemToArray(json_array, nested_object);
    
    // 将JSON数组转换为字符串
    char *json_string = cJSON_Print(json_array);
    if (json_string != NULL) {
        printf("JSON Array:\n%s\n", json_string);
        free(json_string);
    }
    
    // 解析JSON数组
    const char *json_to_parse = "[\"Red\", \"Green\", \"Blue\", 123, true]";
    cJSON *parsed_array = cJSON_Parse(json_to_parse);
    if (parsed_array != NULL && cJSON_IsArray(parsed_array)) {
        printf("\nParsed JSON Array:\n");
        
        cJSON *item = NULL;
        cJSON_ArrayForEach(item, parsed_array) {
            if (cJSON_IsString(item)) {
                printf("String: %s\n", item->valuestring);
            } else if (cJSON_IsNumber(item)) {
                printf("Number: %d\n", item->valueint);
            } else if (cJSON_IsBool(item)) {
                printf("Boolean: %s\n", item->valueint ? "true" : "false");
            }
        }
    }
    
    // 释放内存
    cJSON_Delete(json_array);
    cJSON_Delete(parsed_array);
    
    return EXIT_SUCCESS;
}

代码说明

  1. 创建JSON数组:使用 cJSON_CreateArray() 函数创建一个空数组。

  2. 添加元素:使用 cJSON_AddItemToArray() 向数组中添加各种类型的元素。

  3. 嵌套对象:可以创建对象并作为元素添加到数组中。

  4. 序列化:使用 cJSON_Print() 将JSON结构转换为字符串。

  5. 解析:使用 cJSON_Parse() 解析JSON字符串并遍历数组元素。

  6. 内存管理:使用 cJSON_Delete() 释放分配的内存。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值