如何遍歷JSON的各個屬性值,C語言提供了一種方便快捷的方法——cJSON。
cJSON是一個輕量級的JSON解析器,可以很方便地讀取和處理JSON數(shù)據(jù)。
/*獲取json的屬性值*/ char* json_str = "{ \"name\":\"jobs\", \"age\":56, \"married\":true }"; cJSON* json = cJSON_Parse(json_str); cJSON* name = cJSON_GetObjectItem(json, "name"); printf("name: %s\n", cJSON_Print(name)); cJSON* age = cJSON_GetObjectItem(json, "age"); printf("age: %d\n", age->valueint); cJSON* married = cJSON_GetObjectItem(json, "married"); printf("married: %d\n", married->valueint);
上述代碼首先解析了一個JSON字符串,然后通過cJSON_GetObjectItem()函數(shù)獲取了JSON對象中的各個屬性值,再通過cJSON_Print()函數(shù)或者屬性值本身的成員變量輸出屬性值。
對于JSON數(shù)組的遍歷,也非常簡單。
/*遍歷json數(shù)組*/ char* json_str = "[1,2,3,4,5,6,7,8,9]"; cJSON* json = cJSON_Parse(json_str); cJSON* array = cJSON_GetArrayItem(json, 0); for(int i = 0; i< cJSON_GetArraySize(json); i++) { cJSON* item = cJSON_GetArrayItem(json, i); printf("element %d: %d\n", i, item->valueint); }
上述代碼中,首先解析了一個JSON數(shù)組,然后通過cJSON_GetArrayItem()函數(shù)獲取了數(shù)組中的各個元素(注意:數(shù)組下標(biāo)從0開始),再通過for循環(huán)遍歷各個元素。其實,cJSON提供的API非常豐富,還包括刪除、替換、插入和移動節(jié)點等方法。