在C語言中,解析JSON數據是一項常見的任務。通常我們使用第三方庫如 cJSON 來解析JSON數據,建立對應的數據結構類。但是,在某些情況下,我們可能不希望定義類來存儲JSON數據。這時候,我們可以使用 CJSON 單元測試工具提供的解析JSON方法。
#include "cJSON.h" int main() { const char *json_string = "{\"name\":\"Tom\", \"age\":18, \"gender\":\"male\"}"; cJSON *root = cJSON_Parse(json_string); if (NULL == root) { printf("Error before: [%s]\n", cJSON_GetErrorPtr()); return 1; } cJSON *name = cJSON_GetObjectItemCaseSensitive(root, "name"); if (NULL != name) { printf("name: %s\n", name->valuestring); } cJSON *age = cJSON_GetObjectItemCaseSensitive(root, "age"); if (NULL != age) { printf("age: %d\n", age->valueint); } cJSON *gender = cJSON_GetObjectItemCaseSensitive(root, "gender"); if (NULL != gender) { printf("gender: %s\n", gender->valuestring); } cJSON_Delete(root); return 0; }
上面的代碼演示了如何使用 cJSON 解析 JSON 字符串。首先,我們給出待解析的 JSON 字符串,然后我們使用 cJSON_Parse() 方法解析 JSON 字符串,得到一個 cJSON 結構體指針,這個指針表示了整個 JSON 對象的根節點。接下來,我們就可以使用 cJSON_GetObjectItemCaseSensitive() 方法依次獲取到 JSON 對象中的鍵值對。
需要注意的是,cJSON 的解析結果只是一個 cJSON 結構體,這個結構體與 JSON 對象的結構不一樣。cJSON 的結構體通常是一個類似樹形的結構,可以通過一系列的方法來操作這個樹。但是,cJSON 的結構體可以非常方便地與原生 C 的數據類型進行轉換,例如:cJSON 中的字符串可以通過 cJSON_GetStringValue() 方法獲取到原生 C 的 char* 類型字符串。
上一篇vue 3 官網
下一篇c 解析json中數組