在項目開發中,我們有時候需要從本地接口取 JSON 數據庫。下面是使用 C 語言從本地接口獲取 JSON 數據庫的步驟。
首先,我們需要在代碼中定義以下結構體:
typedef struct { char* key; char* value; } json_pair_t; typedef struct { size_t count; json_pair_t* pairs; } json_dict_t;
接著,我們需要引用 cJSON 庫,該庫可用于解析 JSON 數據庫。以下是 cJSON 庫的引入方法:
#include "cJSON.h"
在代碼中使用 cJSON 庫之前,需要先將 JSON 數據庫從本地接口讀取到內存中??梢允褂靡韵麓a從文件中讀取 JSON 數據庫:
char* read_file(const char* filename) { FILE* fp; long len; char* content; fp = fopen(filename, "r"); fseek(fp, 0, SEEK_END); len = ftell(fp); fseek(fp, 0, SEEK_SET); content = (char*)malloc(len + 1); fread(content, len, 1, fp); fclose(fp); content[len] = '\0'; return content; } char* json_string = read_file("database.json");
現在已經從文件中讀取了 JSON 數據庫,下一步是解析它。可以使用以下代碼解析并存儲 JSON 數據庫的鍵值:
cJSON* root = cJSON_Parse(json_string); json_dict_t dict; dict.count = cJSON_GetArraySize(root); dict.pairs = (json_pair_t*)malloc(dict.count * sizeof(json_pair_t)); for(size_t i = 0; i< dict.count; i++) { cJSON* item = cJSON_GetArrayItem(root, i); cJSON* key = cJSON_GetObjectItem(item, "key"); cJSON* value = cJSON_GetObjectItem(item, "value"); dict.pairs[i].key = key->valuestring; dict.pairs[i].value = value->valuestring; } cJSON_Delete(root);
現在,我們已經成功地從本地接口獲取了 JSON 數據庫,并將它們存儲在一個結構體中。我們可以通過以下代碼訪問 JSON 數據庫的值:
char* get_value_by_key(const json_dict_t* dict, const char* key) { for(size_t i = 0; i< dict->count; i++) { if(strcmp(dict->pairs[i].key, key) == 0) { return dict->pairs[i].value; } } return NULL; } char* value = get_value_by_key(&dict, "name");
以上就是使用 C 語言從本地接口獲取 JSON 數據庫的步驟。希望本文對你有所幫助。