在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;
}
代码说明
-
创建JSON数组:使用
cJSON_CreateArray()
函数创建一个空数组。 -
添加元素:使用
cJSON_AddItemToArray()
向数组中添加各种类型的元素。 -
嵌套对象:可以创建对象并作为元素添加到数组中。
-
序列化:使用
cJSON_Print()
将JSON结构转换为字符串。 -
解析:使用
cJSON_Parse()
解析JSON字符串并遍历数组元素。 -
内存管理:使用
cJSON_Delete()
释放分配的内存。