C JSON是一種輕量級的數據交換格式,用于將數據從一種程序語言傳輸到另一種程序語言,它可以在不同的平臺上進行文件傳輸、數據序列化和網絡通信。在C/C++編程中,C JSON是非常常見的。它可用于序列化和反序列化程序的數據。下面是一個簡單的例子,演示如何通過C JSON在程序中傳輸文件。
#include <stdio.h> #include <string.h> #include <stdlib.h> #include <jansson.h> void save_json_to_file(json_t *jsonobj, char *filename) { if (jsonobj == NULL || filename == NULL) return; FILE * fp = fopen(filename, "w"); if (fp == NULL) return; char * buffer = json_dumps(jsonobj, JSON_PRESERVE_ORDER); if (buffer == NULL) return; fwrite(buffer, strlen(buffer), 1, fp); fclose(fp); free(buffer); } json_t * load_json_from_file(char *filename) { if (filename == NULL) return NULL; FILE * fp = fopen(filename, "r"); if (fp == NULL) return NULL; fseek(fp, 0, SEEK_END); size_t size = ftell(fp); fseek(fp, 0, SEEK_SET); char * buffer = (char *)malloc(size + 1); if (buffer == NULL) return NULL; fread(buffer, size, 1, fp); fclose(fp); buffer[size] = '\0'; json_t * jsonobj = json_loads(buffer, 0, NULL); free(buffer); return jsonobj; } int main() { // 序列化 json_t * root = json_object(); json_object_set_new(root, "name", json_string("test.json")); json_object_set_new(root, "path", json_string("/usr/local/var/test.json")); save_json_to_file(root, "/usr/local/var/test_bak.json"); // 反序列化 json_t * root_bak = load_json_from_file("/usr/local/var/test_bak.json"); // 讀取數據 const char * name_value = json_string_value(json_object_get(root_bak, "name")); printf("文件名: %s\n", name_value); const char * path_value = json_string_value(json_object_get(root_bak, "path")); printf("文件路徑: %s\n", path_value); // 釋放內存 json_decref(root); json_decref(root_bak); return 0; }
以上代碼演示了如何使用C JSON在程序中傳輸文件。基本思路是先將文件信息序列化為JSON對象,然后將其保存到文件中。在需要反序列化時,只需將JSON對象從文件中讀取出來,便可獲取所需信息。這種方式在網絡傳輸、數據備份等場景中應用非常廣泛。
上一篇mysql單庫單表