cjson是一種C語(yǔ)言中處理json數(shù)據(jù)的庫(kù),可以方便地解析json數(shù)據(jù)。在處理嵌套的json數(shù)據(jù)時(shí),可以使用cjson提供的函數(shù)來(lái)逐層解析。
例:以下為一個(gè)json數(shù)據(jù) { "name": "Jack", "age": 20, "hobbies": { "music": ["pop", "rock"], "sports": ["basketball", "football"] } }
如果要獲取這個(gè)json數(shù)據(jù)中的"music"屬性,需要先獲取"hobbies"屬性,然后再獲取"music"屬性。下面是使用cjson解析的代碼:
char* json = "{...}"; // json數(shù)據(jù) cJSON* root = cJSON_Parse(json); if (root != NULL) { cJSON* hobbies = cJSON_GetObjectItem(root, "hobbies"); if (hobbies != NULL) { cJSON* music = cJSON_GetObjectItem(hobbies, "music"); if (music != NULL) { int size = cJSON_GetArraySize(music); for (int i = 0; i< size; i++) { cJSON* item = cJSON_GetArrayItem(music, i); if (item != NULL) { printf("%s\n", item->valuestring); } } } } } cJSON_Delete(root); // 釋放資源
以上代碼先將json數(shù)據(jù)解析成cjson的數(shù)據(jù)結(jié)構(gòu),然后逐層獲取屬性值,并通過(guò)循環(huán)獲取"music"屬性值,最后釋放資源。
通過(guò)cjson的函數(shù)逐層獲取嵌套的json數(shù)據(jù),可以方便地對(duì)json數(shù)據(jù)進(jìn)行處理。