在C中,我們可以使用標準庫中的cJSON庫來進行json的解析和構建。而將json轉換成數組,則需要借助cJSON庫中提供的一些函數。
首先,我們需要調用cJSON_Parse()函數將json字符串解析成cJSON對象:
char *json_str = "{\"name\":\"Tom\", \"age\":18}"; cJSON *json = cJSON_Parse(json_str);
接著,我們可以通過cJSON_GetArraySize()函數來獲取json數組的大小:
int size = cJSON_GetArraySize(json);
然后,我們可以使用cJSON_GetArrayItem()函數來獲取json數組中的每一個元素,并將其轉換成相應的數據類型。例如,以下代碼將獲取json數組中的第一個元素,并將其轉換成字符串類型:
cJSON *item = cJSON_GetArrayItem(json, 0); char *str = cJSON_GetStringValue(item);
另外,如果json數組中的元素不是基本類型,而是一個嵌套的json,則我們可以通過遞歸調用cJSON_GetArrayItem()函數來獲取其內部元素。例如,以下代碼將獲取json數組中第二個元素的“info”字段的值:
cJSON *item = cJSON_GetArrayItem(json, 1); cJSON *info = cJSON_GetObjectItem(item, "info"); char *value = cJSON_GetStringValue(info);
最后,我們需要在使用完cJSON對象后調用cJSON_Delete()函數來釋放內存:
cJSON_Delete(json);
使用以上方法,我們可以很方便地將json轉換成數組,并獲取其內部元素的值。