在C語言中,經常需要將JSON數組轉換為對應的C數組或結構體。下面介紹一種基于cJSON庫實現的JSON數組轉C數組的方法。
#include <stdio.h>
#include <stdlib.h>
#include <cJSON.h>
int main() {
char *jsonstr = "[1, 2, 3]";
cJSON *json = cJSON_Parse(jsonstr);
if (json == NULL) {
const char *error_ptr = cJSON_GetErrorPtr();
if (error_ptr != NULL) {
fprintf(stderr, "Error before: %s\n", error_ptr);
}
exit(EXIT_FAILURE);
}
cJSON *item;
int i = 0, size = cJSON_GetArraySize(json);
int *arr = (int*) malloc(sizeof(int) * size);
cJSON_ArrayForEach(item, json) {
arr[i++] = item->valueint;
}
cJSON_Delete(json);
return 0;
}
上述代碼首先定義了一個JSON字符串,然后調用cJSON_Parse函數解析JSON并將其轉換為CJSON結構體。接著通過遍歷結構體中的所有元素,將值賦給對應的C數組。最后,釋放內存并返回結果。