在實際的開發中,我們經常會面對操作多層嵌套的JSON數據結構的情況。而C語言中并沒有內置的JSON解析功能,因此我們需要使用第三方庫來進行JSON的解析。
在此推薦兩個常用的C語言JSON處理庫:cJSON和Jansson。以下代碼示例以cJSON庫為例。
#include <stdio.h> #include <stdlib.h> #include <cJSON.h> int main() { char* jsonData = "{\"name\":\"張三\",\"age\":18,\"address\":{\"province\":\"江蘇省\",\"city\":\"南京市\"}}"; cJSON* root = cJSON_Parse(jsonData); cJSON* address = cJSON_GetObjectItem(root, "address"); cJSON* province = cJSON_GetObjectItem(address, "province"); printf("%s\n", province->valuestring); cJSON_Delete(root); }
以上代碼中,我們首先定義了一段JSON格式的字符串jsonData。然后使用cJSON_Parse函數將其解析為cJSON格式的根節點root。接著使用cJSON_GetObjectItem函數取得root中的address節點,并通過cJSON_GetObjectItem函數獲取其下面的province節點。最后使用printf輸出province節點的valuestring。
需要注意的是,在取多層嵌套的節點時一定要確保上層節點存在,否則會導致程序崩潰。此外,在使用完cJSON_Parse后,一定要記得使用cJSON_Delete函數來釋放內存。