JSON是一種輕量級的數據交換格式,在前后端開發中經常會用到。下面我們來看看如何在C語言中創建JSON文件。
#include <stdio.h> #include <jansson.h> int main() { json_t *root; json_t *array; json_t *obj1, *obj2; json_t *str, *val; const char *filename = "example.json"; root = json_object(); // 創建一個JSON對象 str = json_string("hello, world"); // 創建一個字符串 json_object_set(root, "message", str); // 將字符串添加到對象中 array = json_array(); // 創建一個JSON數組 obj1 = json_object(); // 創建另一個JSON對象 str = json_string("Alice"); val = json_integer(25); json_object_set(obj1, "name", str); json_object_set(obj1, "age", val); json_array_append(array, obj1); // 將對象添加到數組中 obj2 = json_object(); // 創建一個新的JSON對象 str = json_string("Bob"); val = json_integer(30); json_object_set(obj2, "name", str); json_object_set(obj2, "age", val); json_array_append(array, obj2); // 將對象添加到數組中 json_object_set(root, "people", array); // 將數組添加到對象中 json_dump_file(root, filename, JSON_INDENT(4)); // 將JSON對象寫入文件中 json_decref(root); // 釋放JSON對象 return 0; }
上述代碼使用了jansson庫來創建JSON對象,并將其寫入文件example.json中。其中,json_object_set用于將一個JSON對象添加到另一個JSON對象中,json_array_append用于將一個JSON對象添加到JSON數組中,json_dump_file用于將JSON對象寫入文件中。JSON_INDENT(4)指定每個層級縮進4個空格。
接下來,我們來看看如何在C語言中打開JSON文件。
#include <stdio.h> #include <jansson.h> int main() { json_t *root; json_error_t error; const char *filename = "example.json"; root = json_load_file(filename, 0, &error); // 加載JSON文件 if (!root) { fprintf(stderr, "error: on line %d: %s\n", error.line, error.text); return 1; } json_t *message = json_object_get(root, "message"); // 獲取JSON對象中的值 const char *msg = json_string_value(message); printf("message: %s\n", msg); json_t *people = json_object_get(root, "people"); size_t index; json_t *value; json_array_foreach(people, index, value) { // 遍歷JSON數組 json_t *name = json_object_get(value, "name"); json_t *age = json_object_get(value, "age"); const char *n = json_string_value(name); int a = json_integer_value(age); printf("name: %s, age: %d\n", n, a); } json_decref(root); // 釋放JSON對象 return 0; }
上述代碼使用了json_load_file函數加載example.json文件,如果加載失敗則會打印錯誤信息。使用json_object_get函數獲取JSON對象中的值,使用json_array_foreach函數遍歷JSON數組。使用json_string_value和json_integer_value函數分別獲取字符串和數字類型的值。