C語言是一種強大的編程語言,它由于其高效性和廣泛適用性而備受青睞。JSON作為一種輕量級的數據交換格式,由于其易讀性和易解析性也被廣泛應用。然而,當JSON的結構變得復雜時,在C語言中解析JSON數據將變得困難。本文將介紹如何將復雜JSON數據轉換為對象。
#include#include #include #include #include "cJSON.h" typedef struct { int id; char name[50]; int age; char address[200]; } Person; void parsePerson(cJSON *personJSON, Person *person) { cJSON *idJSON = cJSON_GetObjectItem(personJSON, "id"); person->id = idJSON->valueint; cJSON *nameJSON = cJSON_GetObjectItem(personJSON, "name"); strncpy(person->name, cJSON_GetStringValue(nameJSON), sizeof(person->name)); cJSON *ageJSON = cJSON_GetObjectItem(personJSON, "age"); person->age = ageJSON->valueint; cJSON *addressJSON = cJSON_GetObjectItem(personJSON, "address"); strncpy(person->address, cJSON_GetStringValue(addressJSON), sizeof(person->address)); } int main() { char *jsonStr = "{\"id\":1,\"name\":\"Tom\",\"age\":24,\"address\":\"123 Main St, Anytown, USA\"}"; cJSON *root = cJSON_Parse(jsonStr); Person person; parsePerson(root, &person); printf("id: %d\n", person.id); printf("name: %s\n", person.name); printf("age: %d\n", person.age); printf("address: %s\n", person.address); cJSON_Delete(root); return 0; }
在這個例子中,我們定義了一個名為Person的結構體,它包含id,name,age和address字段。接下來,我們定義了一個函數parsePerson,它從JSON對象解析出一個Person對象。
首先,我們使用cJSON_GetObjectItem函數從JSON對象中獲取id,name,age和address字段。然后,我們使用cJSON_GetStringValue函數將字符值轉換為字符串,并使用strncpy函數將值復制到我們的Person結構體中。
最后,我們在主函數中調用parsePerson函數,并將解析出的Person對象打印出來。需要注意的是,在使用cJSON_Parse函數將JSON字符串解析為JSON對象后,需要使用cJSON_Delete函數釋放JSON對象占用的內存。
上一篇python 清華園
下一篇python 添加線程