JavaScript Object Notation(JSON)是一種輕量級的數據交換格式,易于閱讀和編寫。JSON字符串是一種結構化的數據,它以鍵值對的形式顯示多個元素。C語言可以使用第三方庫來解析和處理JSON字符串。下面是一些常用的JSON庫:
- cJSON:這是一個輕量級的庫,提供了解析和生成JSON數據的功能。 - jansson:這是一個高效的庫,提供了JSON數據的解析和生成。 - YAJL:這是一個快速的JSON庫,適用于大規模數據的解析和生成。
下面是使用cJSON庫處理JSON字符串的示例:
#include <stdio.h> #include <cjson/cJSON.h> int main() { char *json_string = "{\"name\": \"John\", \"age\": 25, \"isStudent\": true}"; cJSON *root = cJSON_Parse(json_string); if (!root) { printf("Error before: [%s]\n", cJSON_GetErrorPtr()); } else { 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 *isStudent = cJSON_GetObjectItemCaseSensitive(root, "isStudent"); if (cJSON_IsBool(isStudent)) { printf("Is Student? %s\\n", isStudent->valueint ? "yes" : "no"); } cJSON_Delete(root); } return 0; }
以上代碼解析JSON字符串并提取每個元素的值并打印出來。cJSON庫提供了一組API函數來更方便地解析和處理JSON數據。