C只需要JSON幾個(gè)字段
{"name": "張三", "age": 25, "gender": "男"}
在 C 語(yǔ)言中,我們可以使用第三方庫(kù) cJSON 來(lái)解析 JSON 數(shù)據(jù)。它支持解析的 JSON 數(shù)據(jù)格式較為靈活,但是在使用時(shí)需要注意一些細(xì)節(jié)。
首先,我們需要通過(guò) cJSON_Parse 函數(shù)將 JSON 數(shù)據(jù)轉(zhuǎn)成 cJSON 存儲(chǔ)格式。在具體解析時(shí),我們可以通過(guò) cJSON_GetObjectItem 函數(shù)獲取 JSON 對(duì)象中的某個(gè)字段。
cJSON* json = cJSON_Parse("{\"name\": \"張三\", \"age\": 25, \"gender\": \"男\(zhòng)"}"); if(json != NULL) { cJSON* name = cJSON_GetObjectItem(json, "name"); cJSON* age = cJSON_GetObjectItem(json, "age"); cJSON* gender = cJSON_GetObjectItem(json, "gender"); if(cJSON_IsString(name)) { printf("name: %s\n", name->valuestring); } if(cJSON_IsNumber(age)) { printf("age: %d\n", age->valueint); } if(cJSON_IsString(gender)) { printf("gender: %s\n", gender->valuestring); } cJSON_Delete(json); }
注意,在獲取 JSON 對(duì)象中的字段時(shí),我們需要注意數(shù)據(jù)類型的匹配。除了上述示例中的 cJSON_IsString 和 cJSON_IsNumber 函數(shù),cJSON 還提供了其他類型判斷函數(shù),如 cJSON_IsArray、cJSON_IsTrue 等。
我們還可以通過(guò) cJSON_AddItemToObject 函數(shù)將一個(gè) cJSON 對(duì)象添加到另一個(gè) cJSON 對(duì)象中,這對(duì)于構(gòu)造 JSON 數(shù)據(jù)是比較有用的。
cJSON* json = cJSON_CreateObject(); cJSON_AddStringToObject(json, "name", "李四"); cJSON_AddNumberToObject(json, "age", 30); cJSON_AddStringToObject(json, "gender", "男"); char* str = cJSON_Print(json); printf("%s\n", str); cJSON_Delete(json); free(str);
最后值得一提的是,在使用 cJSON 時(shí)需要注意內(nèi)存管理。cJSON_Parse 函數(shù)在解析完成后會(huì)生成一個(gè) cJSON 對(duì)象作為存儲(chǔ),我們需要手動(dòng)調(diào)用 cJSON_Delete 函數(shù)來(lái)釋放其占用的內(nèi)存。
另外,cJSON_Print 函數(shù)會(huì)在堆上分配內(nèi)存,因此在使用完后需要記得釋放。