JSON是一种轻量级的数据交换格式,被广泛应用于各个领域。在C语言中如何生成和解析JSON字符串呢?下面我们一起来了解。
首先,我们需要安装cJSON库,它是一个轻量级的JSON解析库,提供了一套简单易用的API,支持生成和解析JSON字符串。
接下来我们看看如何生成JSON字符串:
#include <stdio.h> #include <cJSON.h> int main(){ cJSON *root, *array, *item; char *str; // 创建JSON对象 root = cJSON_CreateObject(); // 添加一个字符串类型的键值对 cJSON_AddStringToObject(root, "name", "张三"); // 添加一个整型类型的键值对 cJSON_AddNumberToObject(root, "age", 25); // 添加一个数组类型的键值对 array = cJSON_AddArrayToObject(root, "hobbies"); cJSON_AddItemToArray(array, cJSON_CreateString("coding")); cJSON_AddItemToArray(array, cJSON_CreateString("reading")); // 生成JSON字符串 str = cJSON_Print(root); // 打印JSON字符串 printf("%s\n", str); // 释放内存 cJSON_Delete(root); free(str); return 0; }
首先,我们创建了一个名为root的JSON对象。然后,我们使用cJSON_AddStringToObject()函数向root对象添加一个name字段,值为“张三”;使用cJSON_AddNumberToObject()函数向root对象添加一个age字段,值为25;使用cJSON_AddArrayToObject()函数向root对象添加一个hobbies字段,值为一个数组。数组中包含两个字符串类型的元素:“coding”和“reading”。最后,我们使用cJSON_Print()函数将root对象转换成JSON字符串,并使用printf()函数打印JSON字符串。
解析JSON字符串也非常简单:
#include <stdio.h> #include <cJSON.h> int main(){ cJSON *root, *item; char *str = "{\"name\":\"张三\",\"age\":25,\"hobbies\":[\"coding\",\"reading\"]}"; // 解析JSON字符串 root = cJSON_Parse(str); // 获取name字段的值 item = cJSON_GetObjectItem(root, "name"); printf("name: %s\n", item->valuestring); // 获取age字段的值 item = cJSON_GetObjectItem(root, "age"); printf("age: %d\n", item->valueint); // 获取hobbies数组中的元素 item = cJSON_GetObjectItem(root, "hobbies"); cJSON_ArrayForEach(item, item){ printf("%s ", item->valuestring); } // 释放内存 cJSON_Delete(root); return 0; }
这里我们使用了cJSON_Parse()函数将一个JSON字符串转换成JSON对象root。接下来,我们使用cJSON_GetObjectItem()函数获取root对象中name、age和hobbies字段的值。其中,cJSON_StringValue()函数用于获取字符串类型的值,cJSON_GetArrayItem()函数用于获取数组中指定位置的元素,cJSON_ArrayForEach()函数用于遍历整个数组。最后,我们使用cJSON_Delete()函数释放内存。
至此,我们已经了解了C语言生成和解析JSON字符串的基本方法。