C JSON 是一種常用的數(shù)據(jù)交換格式,它很容易被各種編程語言解析和生成。在使用 C 語言來解析 JSON 數(shù)據(jù)時(shí),我們需要使用第三方庫來方便地進(jìn)行操作。而在 C JSON 中,我們可以通過鍵來取值。
#include <stdio.h> #include <cjson/cJSON.h> int main() { char *json_string = "{\"name\": \"John Smith\", \"age\": 35, \"gender\": true}"; cJSON *json = cJSON_Parse(json_string); if (json) { cJSON *name = cJSON_GetObjectItem(json, "name"); if (name && cJSON_IsString(name)) { printf("name: %s\n", name->valuestring); } cJSON *age = cJSON_GetObjectItem(json, "age"); if (age && cJSON_IsNumber(age)) { printf("age: %d\n", age->valueint); } cJSON *gender = cJSON_GetObjectItem(json, "gender"); if (gender && cJSON_IsBool(gender)) { printf("gender: %s\n", gender->valueint ? "male" : "female"); } cJSON_Delete(json); } return 0; }
在上面的代碼中,我們首先定義了一個(gè) JSON 字符串,然后使用cJSON_Parse()
函數(shù)將其解析成一個(gè) cJSON 對象。接著,我們使用cJSON_GetObjectItem()
函數(shù)根據(jù)鍵獲取值。注意,我們需要使用cJSON_IsString()
、cJSON_IsNumber()
、cJSON_IsBool()
等函數(shù)來判斷值的類型,然后才能調(diào)用相應(yīng)的獲取函數(shù)(如cJSON_GetString()
、cJSON_GetNumber()
、cJSON_IsBool()
)。最后,我們使用cJSON_Delete()
函數(shù)釋放 cJSON 對象所占用的內(nèi)存。
除了使用cJSON_GetObjectItem()
函數(shù),我們也可以使用cJSON_GetObjectItemCaseSensitive()
函數(shù)來獲取值。這兩個(gè)函數(shù)的區(qū)別在于,前者會忽略鍵的大小寫,而后者則不會。這在鍵區(qū)分大小寫的情況下很有用。
cJSON *value = cJSON_GetObjectItemCaseSensitive(json, "Key");
相信通過這篇文章的介紹,你已經(jīng)對 C JSON 的取值操作有了一定的了解。在實(shí)際編程時(shí),我們需要根據(jù)自己的需求靈活運(yùn)用這些 API,來完成對 JSON 數(shù)據(jù)的解析和生成。