在 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 數據及相關內存。
上一篇vue.js input
下一篇c 獲取json集合