在C语言开发中,常常需要将JSON数据转化为数组,或者将数组转化为JSON数据。而这个过程,可以通过使用CJSON库来实现。
首先需要安装CJSON库,这里以Ubuntu系统为例,使用以下命令进行安装:
sudo apt-get install libcjson-dev
然后在代码中引入CJSON库:
#include <cjson/cJSON.h>
接下来实现JSON数据转数组的函数如下:
int json_to_array(char *json_str, char *key, char **array) { cJSON *json = cJSON_Parse(json_str); if (json == NULL) { return -1; } cJSON *item = cJSON_GetObjectItem(json, key); if (item == NULL) { cJSON_Delete(json); return -1; } int array_size = cJSON_GetArraySize(item); for (int i = 0; i < array_size; i++) { cJSON *subitem = cJSON_GetArrayItem(item, i); array[i] = strdup(subitem->valuestring); } cJSON_Delete(json); return array_size; }
这个函数接收一段JSON数据,一个key值,和一个数组指针。它首先解析JSON数据,然后找到对应的key值项。然后在遍历这个key值项中的所有子项,将其转化为C语言的字符串,存储在数组中。
接下来看一下数组转JSON数据的函数:
char *array_to_json(char *key, char **array, int array_size) { cJSON *json = cJSON_CreateObject(); cJSON *item = cJSON_CreateArray(); for (int i = 0; i < array_size; i++) { cJSON_AddItemToArray(item, cJSON_CreateString(array[i])); } cJSON_AddItemToObject(json, key, item); char *json_str = cJSON_PrintUnformatted(json); cJSON_Delete(json); return json_str; }
这个函数接收一个key值,一个数组指针,和数组大小。它首先使用CJSON库创建一个空的JSON对象,并创建一个空的JSON数组。然后遍历数组,将每个数组项转化为JSON字符串并添加到JSON数组中。最后将JSON数组添加到JSON对象中,并将JSON对象转化为字符串返回。
使用CJSON库可以简单方便地实现JSON数据和C语言数组间的转化。