淘先锋技术网

首页 1 2 3 4 5 6 7

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,从字典中获取相应的数据,并打印出来。