JSON(JavaScript對象表示法)是一種輕量級的數(shù)據(jù)交換格式,常用于異構(gòu)環(huán)境下的數(shù)據(jù)交換。在C語言中解析JSON,我們需要使用解析器來完成。常見的C語言解析器有Jansson、cJSON等。
Jansson是一個開源的C語言JSON解析器,它具有快速、輕量級等優(yōu)點。下面我們就來看看如何使用Jansson解析JSON源碼。
// 引入頭文件 #include <jansson.h> //JSON源碼 const char *json_string = "{ \"name\": \"Tom\", \"age\": 18 }"; //解析JSON json_t *root; json_error_t error; root = json_loads(json_string, 0, &error); if(!root){ fprintf(stderr, "JSON解析出錯:%d:%s\n", error.line, error.text); exit(1); } //解析JSON對象 if(json_is_object(root)){ json_t *name, *age; const char *name_str; int age_int; name = json_object_get(root, "name"); name_str = json_string_value(name); age = json_object_get(root, "age"); age_int = json_integer_value(age); printf("name=%s, age=%d\n", name_str, age_int); } json_decref(root); //釋放內(nèi)存
上面的代碼中,我們首先引入了jansson.h頭文件,然后定義了一個JSON源碼字符串。接著,我們使用json_loads函數(shù)解析JSON源碼,將解析后的結(jié)果存儲到root變量中。如果解析出錯,則會輸出錯誤信息并退出程序。
接下來,我們使用json_object_get函數(shù)從JSON對象中獲取指定的key對應(yīng)的值,然后使用json_string_value和json_integer_value函數(shù)將值轉(zhuǎn)換為對應(yīng)的字符串和整型。最后,我們輸出解析得到的結(jié)果。
最后,別忘了在程序結(jié)束時使用json_decref函數(shù)釋放內(nèi)存。