JSON是JavaScript Object Notation的縮寫,是一種輕量級的數據交換格式。在C語言編程中,我們經常需要從JSON格式的文本中讀取數據。為此,我們需要使用一些開源的JSON庫,例如jansson、cJSON等。
下面是一個使用jansson庫讀取JSON文本的示例:
#include <jansson.h> #include <stdio.h> int main() { const char* json_text = "{\"name\":\"Tom\",\"age\":18}"; json_t* root = json_loads(json_text, 0, NULL); if (!root) { fprintf(stderr, "Error converting JSON text to JSON object!\n"); return 1; } json_t* name = json_object_get(root, "name"); if (!json_is_string(name)) { fprintf(stderr, "Error parsing name field from JSON object!\n"); return 1; } const char* name_str = json_string_value(name); printf("name: %s\n", name_str); json_t* age = json_object_get(root, "age"); if (!json_is_integer(age)) { fprintf(stderr, "Error parsing age field from JSON object!\n"); return 1; } int age_int = json_integer_value(age); printf("age: %d\n", age_int); json_decref(root); return 0; }
以上代碼首先定義了一個JSON文本,然后使用json_loads函數將其轉換為json_t類型的對象。接著,我們使用json_object_get函數從JSON對象中獲取name和age字段,并分別判斷它們是否是字符串和整數類型。最后,我們通過json_string_value和json_integer_value函數獲取這些字段的值,并將它們打印出來。最后,要記得使用json_decref釋放內存。
當然,以上這個示例只是最基本的JSON解析功能。如果你的JSON文本包含了更多的數據,你需要使用更多JSON API來將其轉換為你需要的C語言類型。欲了解更多內容,請參考相關的JSON庫文檔。