在Web開發中經常需要前端向后端傳輸數據,而JSON(JavaScript 對象表示法)作為一種輕量級的數據交換格式,成為了一種常用的數據格式。而在C語言中,利用json-c庫可以方便地解析JSON數據,實現前后端數據交互。下面介紹如何使用json-c庫實現登錄功能。
#include#include #include #define FILE_PATH "user.json" #define MAX_STRING 100 // 用戶結構體 typedef struct { char username[MAX_STRING]; char password[MAX_STRING]; } user; // 讀取JSON文件 json_object* read_json_file(char* filename) { char buffer[MAX_STRING]; int size; FILE* fp = fopen(filename, "r"); if (fp == NULL) { printf("File not found.\n"); return NULL; } fseek(fp, 0L, SEEK_END); size = ftell(fp); fseek(fp, 0L, SEEK_SET); fread(buffer, size, 1, fp); fclose(fp); return json_tokener_parse(buffer); } int main() { char input_username[MAX_STRING], input_password[MAX_STRING]; printf("Please enter your username: "); scanf("%s", input_username); printf("Please enter your password: "); scanf("%s", input_password); json_object* users_obj = read_json_file(FILE_PATH); if (users_obj == NULL) { return 0; } // 循環遍歷用戶列表 int user_count = json_object_array_length(users_obj); for (int i = 0; i< user_count; i++) { json_object* user_obj = json_object_array_get_idx(users_obj, i); user current_user; json_object_object_foreach(user_obj, key, val) { if (strcmp(key, "username") == 0) { strcpy(current_user.username, json_object_get_string(val)); } if (strcmp(key, "password") == 0) { strcpy(current_user.password, json_object_get_string(val)); } } if (strcmp(input_username, current_user.username) == 0 && strcmp(input_password, current_user.password) == 0) { printf("Login success!\n"); return 0; } } printf("Username or password is incorrect.\n"); return 0; }
在上述代碼中,我們首先定義了一個用戶結構體,其中包含用戶名和密碼兩個成員變量。然后定義了一個函數read_json_file,用于讀取JSON文件并返回一個json_object對象。
在主函數中,我們首先從用戶輸入中獲取到用戶名和密碼,并調用read_json_file函數讀取指定路徑下的JSON文件。然后循環遍歷用戶列表,利用json_object_object_foreach函數獲取當前遍歷到的用戶的用戶名和密碼,比對用戶輸入與文件中的數據是否匹配,若匹配則輸出登錄成功。
至此,利用json-c庫實現登錄功能的代碼已經完成。但是需要注意的是,由于C語言的編譯執行速度較慢,對于Web后臺場景,建議使用其他更加高效的語言進行開發。
上一篇vue 添加音樂
下一篇hbase獲取json值