JSON作為一種支持多種數據結構的數據交換格式,在日常開發中被廣泛使用。在C語言中,讀取JSON文件中的數據類型也變得尤為重要。
#include <stdio.h> #include <jansson.h> int main() { const char* json_string = "{\"name\":\"Lucas\",\"age\":25,\"is_male\":true,\"scores\":[80,90,85]}"; json_error_t error; json_t* root = json_loads(json_string, 0, &error); // 將JSON字符串轉換成JSON對象,并保存在json_t結構體指針中 json_t* name = json_object_get(root, "name"); // 獲取JSON對象中指定鍵名的鍵值 const char* name_str = json_string_value(name); // 將JSON字符串類型的鍵值轉換成C語言的char*類型 printf("Name: %s\n", name_str); json_t* age = json_object_get(root, "age"); int age_int = json_integer_value(age); // 將JSON數字類型的鍵值轉換成C語言的int類型 printf("Age: %d\n", age_int); json_t* is_male = json_object_get(root, "is_male"); int is_male_bool = json_boolean_value(is_male); // 將JSON布爾類型的鍵值轉換成C語言的int類型,1代表true,0代表false printf("Is male: %d\n", is_male_bool); json_t* scores = json_object_get(root, "scores"); int scores_size = json_array_size(scores); // 獲取JSON數組類型鍵值的長度 for (int i = 0; i < scores_size; i++) { json_t* score = json_array_get(scores, i); // 獲取JSON數組類型鍵值的第i個元素 int score_int = json_integer_value(score); printf("Score %d: %d\n", i + 1, score_int); } json_decref(root); // 釋放JSON對象占用的內存 return 0; }
除了上述代碼中涉及到的數據類型,JSON文件還支持更多的數據結構類型,比如字符串類型、null類型等,讀取方法也類似。不過需要注意的是,在使用json_t結構體指針訪問JSON中的數據時,需要使用相應的類型轉換函數(例如json_integer_value、json_string_value等)來將JSON的數據類型轉換成C語言中對應的數據類型。