在進行C語言中的JSON解析時,我們有時需要處理嵌套的JSON字符串。這篇文章將介紹如何使用C語言解析嵌套JSON字符串。
首先,我們需要使用一個第三方庫來解析JSON字符串。我們可以使用cJSON。可通過以下方式安裝cJSON:
git clone https://github.com/DaveGamble/cJSON.git cd cJSON make sudo make install
安裝完成后,我們就可以開始解析JSON字符串了。假設我們想要解析以下嵌套JSON字符串:
{ "name": "Tom", "age": 25, "address": { "street": "Main Street", "city": "New York", "state": "NY" } }
我們可以使用cJSON中的cJSON_Parse()函數來解析JSON字符串:
#include "cJSON.h" int main() { char *json_str = "{\"name\": \"Tom\", \"age\": 25, \"address\":{\"street\": \"Main Street\", \"city\": \"New York\", \"state\": \"NY\"}}"; cJSON *json_root = cJSON_Parse(json_str); if (json_root != NULL) { // 獲取name cJSON *json_name = cJSON_GetObjectItem(json_root, "name"); if (json_name != NULL) { printf("Name: %s\n", json_name->valuestring); } // 獲取age cJSON *json_age = cJSON_GetObjectItem(json_root, "age"); if (json_age != NULL) { printf("Age: %d\n", json_age->valueint); } // 解析address cJSON *json_address = cJSON_GetObjectItem(json_root, "address"); if (json_address != NULL) { // 獲取street cJSON *json_street = cJSON_GetObjectItem(json_address, "street"); if (json_street != NULL) { printf("Street: %s\n", json_street->valuestring); } // 獲取city cJSON *json_city = cJSON_GetObjectItem(json_address, "city"); if (json_city != NULL) { printf("City: %s\n", json_city->valuestring); } // 獲取state cJSON *json_state = cJSON_GetObjectItem(json_address, "state"); if (json_state != NULL) { printf("State: %s\n", json_state->valuestring); } } cJSON_Delete(json_root); } return 0; }
在上面的代碼中,我們使用了JSON對象的cJSON_GetObjectItem()函數來獲取對象中的成員。要獲取address對象,我們首先需要獲取整個JSON對象的指針,然后再通過cJSON_GetObjectItem()函數獲取address對象的指針。然后我們使用類似的方法獲取address中的每個成員。
最后,我們需要調用cJSON_Delete()函數來釋放JSON對象的內存。
上一篇mysql創建測試數據
下一篇python 詞云 知乎