在C語言中,將JSON格式的字符串轉(zhuǎn)換為對象數(shù)組是一項很常見的任務(wù)。下面介紹一種簡單的方法,該方法使用第三方庫cJSON。
首先,需要從cJSON官網(wǎng)上下載并安裝cJSON庫。安裝完成后,就可以開始將JSON字符串轉(zhuǎn)換為對象數(shù)組了。
以下是一個簡單的示例程序:
#include#include #include #include "cJSON.h" typedef struct { int id; char name[50]; int age; } Person; int main() { char *json_string = "{\"people\":[{\"id\":1,\"name\":\"Alice\",\"age\":20},{\"id\":2,\"name\":\"Bob\",\"age\":25}]}"; cJSON *root = cJSON_Parse(json_string); cJSON *people = cJSON_GetObjectItem(root, "people"); int len = cJSON_GetArraySize(people); Person *array = (Person *) malloc(sizeof(Person) * len); for (int i = 0; i< len; i++) { cJSON *personObject = cJSON_GetArrayItem(people, i); cJSON *idObj = cJSON_GetObjectItem(personObject, "id"); cJSON *nameObj = cJSON_GetObjectItem(personObject, "name"); cJSON *ageObj = cJSON_GetObjectItem(personObject, "age"); array[i].id = idObj->valueint; strcpy(array[i].name, nameObj->valuestring); array[i].age = ageObj->valueint; } cJSON_Delete(root); for (int i = 0; i< len; i++) { printf("Person %d: id=%d, name=%s, age=%d\n", i, array[i].id, array[i].name, array[i].age); } free(array); return 0; }
這個程序?qū)SON字符串解析為一個cJSON對象,然后通過cJSON庫提供的函數(shù)來獲取JSON對象中的值,并將值賦予一個結(jié)構(gòu)體數(shù)組。最后,程序輸出了解析出來的對象數(shù)組。
值得注意的是,這個程序中定義了一個名為“Person”的結(jié)構(gòu)體,它包含三個屬性:id、name和age。我們需要根據(jù)實際情況來設(shè)計自己的結(jié)構(gòu)體。
此外,需要注意的是,在使用完cJSON對象后,需要調(diào)用cJSON_Delete函數(shù)來清除內(nèi)存。