在C語言編程中,讀取JSON文本文件是一個非常常見的操作。JSON文件通常用于存儲數據結構,因此我們需要編寫程序以便于讀取和解析它們。
下面是一個簡單的讀取JSON文件的例子:
#include <stdio.h> #include <stdlib.h> #include <string.h> #include <jansson.h> int main() { FILE *fp; char buffer[1024]; size_t nread; json_t *root; json_error_t error; fp = fopen("data.json", "r"); if (!fp) { fprintf(stderr, "Failed to open file\n"); exit(1); } nread = fread(buffer, 1, sizeof(buffer), fp); fclose(fp); root = json_loads(buffer, 0, &error); if (!root) { fprintf(stderr, "Failed to parse JSON: %s\n", error.text); exit(1); } // 在這里可以使用JSON解析后的數據 json_decref(root); return 0; }
在這個例子中,我們首先打開文件并讀取文件內容到一個緩沖區。然后,我們使用json_loads函數將緩沖區中的JSON字符串轉換為JSON對象。如果解析失敗,我們將輸出錯誤信息并退出程序。
當我們成功解析JSON后,我們可以使用json_object_get、json_array_get等函數來訪問JSON對象和數組的元素。下面是一個訪問JSON對象的例子:
const char *name; json_t *age; name = json_string_value(json_object_get(root, "name")); age = json_object_get(root, "age"); if (!name || !age) { fprintf(stderr, "Invalid JSON object\n"); exit(1); } printf("Name: %s\n", name); printf("Age: %d\n", json_integer_value(age));
在這個例子中,我們首先使用json_object_get函數來獲取JSON對象中的"name"和"age"屬性。然后,我們檢查是否成功獲得了這些屬性,如果失敗則輸出錯誤信息并退出程序。最后,我們使用json_string_value和json_integer_value函數來獲取屬性的值。