在現代編程語言中,JSON(JavaScript Object Notation)已經成為了一種廣泛使用的格式,用于交換數據。C也有一些庫可以解析JSON,本文就為大家介紹一下如何使用C語言解析JSON。
C語言中,我們可以使用一個名為 cJSON 的庫來解析 JSON。cJSON 是一個輕型的JSON解析器,它可以將 JSON 格式的字符串解析成為一個 JSON 對象,同時也可以將一個 JSON 對象序列化成為 JSON 格式的字符串。
#include <stdio.h> #include <cJSON.h> int main() { char* json_str = "{\"name\": \"Tom\", \"age\": 18, \"is_student\": true}"; cJSON* json = cJSON_Parse(json_str); if (!json) { printf("Error before: [%s]\n", cJSON_GetErrorPtr()); } else { cJSON* name = cJSON_GetObjectItemCaseSensitive(json, "name"); printf("name: %s\n", name->valuestring); cJSON* age = cJSON_GetObjectItemCaseSensitive(json, "age"); printf("age: %d\n", age->valueint); cJSON* is_student = cJSON_GetObjectItemCaseSensitive(json, "is_student"); printf("is_student: %d\n", cJSON_IsTrue(is_student)); } cJSON_Delete(json); return 0; }
上述示例中,我們手動創建了一個 JSON 數據字符串,通過 cJSON_Parse 函數解析 JSON 字符串,得到一個 cJSON 對象。cJSON_GetObjectItemCaseSensitive 函數可以根據鍵值獲取對應的值,然后我們就可以將其轉換成相應的類型使用了。最后,我們要別忘了釋放掉 cJSON 對象。
除了解析 JSON 字符串外,cJSON 庫還支持將 c 的結構體序列化成 JSON 格式的字符串。不過具體的用法這里不再贅述,大家可以自行查看 cJSON 庫的文檔。