在C語言中使用JSON是非常方便的,但是在讀取JSON數據時,我們需要使用一些庫來將JSON數據解析成C語言中的變量。常用的JSON處理庫有json-c和cJSON,這兩個庫都可以用來解析JSON數據。
json-c這個庫包含在Ubuntu的軟件源中,可以使用apt-get安裝:
sudo apt-get install libjson-c-dev
使用json-c庫來解析JSON數據:
#include <stdio.h> #include <json-c/json.h> int main() { char *json_string = "{\"name\": \"Bob\", \"age\": 25, \"gender\": \"male\"}"; json_object *json = json_tokener_parse(json_string); json_object_object_foreach(json, key, val) { printf("%s = %s\n", key, json_object_to_json_string(val)); } json_object_put(json); return 0; }
cJSON比json-c更輕量級,但需要手動下載并導入c文件到項目中。使用cJSON解析JSON數據:
#include <stdio.h> #include <cJSON/cJSON.h> int main() { char *json_string = "{\"name\": \"Bob\", \"age\": 25, \"gender\": \"male\"}"; cJSON *json = cJSON_Parse(json_string); cJSON *item = NULL; cJSON_ArrayForEach(item, json) { printf("%s = %s\n", item->string, cJSON_Print(item)); } cJSON_Delete(json); return 0; }
使用json-c或cJSON解析JSON數據都比較簡單,只需導入頭文件并按照API文檔中的說明使用即可。值得注意的是,在使用完json_object和cJSON_Parse返回的cJSON之后,要記得調用相應的函數進行釋放內存。