在C語言中解析JSON字符串中的數(shù)組對象需要用到第三方庫,這里我們介紹使用CJSON庫來解析JSON字符串?dāng)?shù)組對象。
首先我們需要在代碼中引用CJSON庫的頭文件,頭文件中包含解析JSON字符串的相關(guān)函數(shù)和結(jié)構(gòu)體類型。
#include "cJSON.h"
接下來我們將JSON字符串解析為JSON對象,使用CJSON庫中提供的函數(shù)cJSON_Parse()可以實現(xiàn)將JSON字符串解析為JSON對象,并返回根節(jié)點的指針。
char json_str[] = "[{ \"name\":\"Alice\", \"age\": 25 },{ \"name\":\"Bob\", \"age\":30 }]"; cJSON* root = cJSON_Parse(json_str);
解析后的JSON對象是一個樹狀結(jié)構(gòu),樹的每個節(jié)點都是一個cJSON結(jié)構(gòu)體類型,通過訪問節(jié)點的子節(jié)點和兄弟節(jié)點就可以遍歷整個JSON對象。
接下來我們需要獲取JSON對象中的數(shù)組對象,通過訪問根節(jié)點的子節(jié)點可以得到數(shù)組節(jié)點的指針,我們使用cJSON_GetArrayItem()方法來獲取數(shù)組中的具體元素,使用cJSON_GetObjectItemCaseSensitive()可以獲取數(shù)組元素中的屬性。
cJSON* item = cJSON_GetArrayItem(root, 0); cJSON* name = cJSON_GetObjectItemCaseSensitive(item, "name"); char* name_str = name->valuestring;
通過遍歷整個數(shù)組對象的各個元素,我們可以獲取到數(shù)組中每個對象中的具體屬性,實現(xiàn)對JSON字符串?dāng)?shù)組對象的解析。