欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

c 取出json數據

錢衛國1年前8瀏覽0評論

在C語言中,我們可以通過一些第三方庫來解析和處理JSON格式的數據。其中比較常用的有cJSON和jansson兩個庫。

下面我們以cJSON為例,演示如何從JSON數據中取出需要的數據。

//示例JSON數據
char* json_data = "{ 
\"name\": \"Tom\",
\"age\": 26,
\"city\": \"Beijing\",
\"skills\": [\"C++\", \"Java\", \"Python\"],
\"projects\": [
{
\"name\": \"ProjectA\",
\"description\": \"xxx\",
\"status\": true
},
{
\"name\": \"ProjectB\",
\"description\": \"yyy\",
\"status\": false
}
]
}";
//從JSON數據中獲取name字段的值
cJSON *json = cJSON_Parse(json_data);
char* name = cJSON_GetObjectItem(json, "name")->valuestring;
printf("name: %s\n", name);
//從JSON數據中獲取skills數組中的第二個元素
cJSON *skills = cJSON_GetObjectItem(json, "skills");
cJSON *skill2 = cJSON_GetArrayItem(skills, 1);
printf("skill2: %s\n", skill2->valuestring);
//從JSON數據中獲取projects數組中status為true的項目名
cJSON *projects = cJSON_GetObjectItem(json, "projects");
for (int i = 0; i< cJSON_GetArraySize(projects); i++) {
cJSON *project = cJSON_GetArrayItem(projects, i);
cJSON *status = cJSON_GetObjectItem(project, "status");
if (cJSON_IsTrue(status)) {
cJSON *name = cJSON_GetObjectItem(project, "name");
printf("Project name: %s\n", name->valuestring);
}
}
//釋放資源
cJSON_Delete(json);

通過cJSON_Parse將JSON字符串解析成cJSON對象,然后通過cJSON_GetObjectItem和cJSON_GetArrayItem等方法獲取需要的數據。

需要注意的是,使用完cJSON對象之后,需要調用cJSON_Delete方法釋放資源,避免內存泄漏問題。