C JSON 是一種常用的數據傳輸格式,在很多應用場景中都有廣泛的應用。與此同時,字典(Dictionary)也是一種常用的數據結構,在我們進行編程時也經常會涉及到字典的操作。那么,如何將 C JSON 中的數據存入字典呢?下面我們來看一下具體實現方法。
#include <stdio.h> #include <stdlib.h> #include "cJSON.h" #include "uthash.h" // 定義一個結構體,用于存儲字典中的數據 struct dict_data { char key[64]; cJSON *value; UT_hash_handle hh; }; int main() { // 解析 C JSON 字符串 char *json_str = "{\"username\":\"Tom\", \"age\":18}"; cJSON *root = cJSON_Parse(json_str); // 將解析出來的數據存入字典 struct dict_data *dict = NULL; cJSON *child = NULL; cJSON_ArrayForEach(child, root) { struct dict_data *data = malloc(sizeof(struct dict_data)); sprintf(data->key, "%s", child->string); data->value = child; HASH_ADD_STR(dict, key, data); } // 根據鍵名,獲取字典中的數據 struct dict_data *data; char *key = "age"; HASH_FIND_STR(dict, key, data); if (data) { printf("%s: %d\n", key, cJSON_GetNumberValue(data->value)); } }
在上面的代碼中,我們首先需要解析 C JSON 字符串,得到一個 cJSON 對象。然后,我們定義了一個結構體 dict_data,用于存儲字典中的數據。在將 C JSON 中的數據存入字典時,我們使用 cJSON_ArrayForEach 宏,遍歷 cJSON 對象的每一個子元素。然后,我們將每一個子元素存入一個 dict_data 結構體中,并使用哈希表技術將該結構體存入字典中。
最后,我們可以根據鍵名,在字典中獲取對應的數據。在上面的例子中,我們根據鍵名 age,從字典中獲取相應的數據,并打印出來。
上一篇vue for in