淘先锋技术网

首页 1 2 3 4 5 6 7

在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语言数组间的转化。