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