色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

c 獲取json里的數據格式

林玟書1年前7瀏覽0評論

在 C 語言中,我們可以使用各種庫來解析 JSON 數據,例如:jansson, cJSON, json-c 等。JSON (JavaScript Object Notation) 是一種輕量級的數據交換格式,它易于人們閱讀和編寫,并且易于機器解析和生成。在許多應用程序中,我們需要從 JSON 數據中提取數據來使用,下面是 C 語言中獲取 JSON 數據的示例代碼。

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <stdbool.h>#include <cjson/cJSON.h>char *json = "{ \"name\": \"John Smith\", \"age\": 25, \"city\": \"New York\" }";
cJSON *root = cJSON_Parse(json);
if (root == NULL) {
printf("Error parsing JSON: %s\n", cJSON_GetErrorPtr());
return 1;
}
cJSON *name = cJSON_GetObjectItemCaseSensitive(root, "name");
if (cJSON_IsString(name) && (name->valuestring != NULL))
printf("Name: %s\n", name->valuestring);
cJSON *age = cJSON_GetObjectItemCaseSensitive(root, "age");
if (cJSON_IsNumber(age))
printf("Age: %d\n", age->valueint);
cJSON *city = cJSON_GetObjectItemCaseSensitive(root, "city");
if (cJSON_IsString(city) && (city->valuestring != NULL))
printf("City: %s\n", city->valuestring);
cJSON_Delete(root);

在以上代碼中,我們先將 JSON 數據解析為 cJSON 對象,然后使用 cJSON_GetObjectItemCaseSensitive() 函數來獲取對象中的數據。由于 JSON 數據是一個鍵值對的結構,我們需要傳遞一個鍵來獲取相應的值。函數 cJSON_GetObjectItemCaseSensitive() 需要兩個參數,一個是 cJSON 對象本身,另一個是一個字符串,前者表示要獲取該 cJSON 對象中的哪個元素,后者表示該元素的鍵。

在獲取數據后,我們需要判斷數據的類型。由于 cJSON 中的數據類型是通過 typedef 定義的,所以我們需要使用 cJSON_IsXXX() 系列的宏來驗證數據的類型。例如:cJSON_IsString(),cJSON_IsNumber() 等。如果數據是一個字符串或數字,我們可以使用相應的 valuestring 或 valueint 成員來獲取數據。

最后,我們需要釋放 cJSON 對象及其內存,以免出現內存泄漏。CJSON 給出了 cJSON_Delete() 函數來釋放 JSON 數據及相關內存。