在C語言中,將JSON字符串轉換為list是一個很常見的操作。JSON字符串是現代Web應用程序中常用的數據格式之一,它包含了鍵值對和數組等數據結構,方便進行數據傳輸。C語言中使用第三方庫cJSON來解析JSON字符串。
cJSON *json = NULL; char *json_string = "{\"name\":\"Tom\",\"age\":20,\"hobbies\":[\"reading\",\"sports\"]}"; json = cJSON_Parse(json_string); cJSON *name = cJSON_GetObjectItemCaseSensitive(json, "name"); cJSON *age = cJSON_GetObjectItemCaseSensitive(json, "age"); cJSON *hobbies = cJSON_GetObjectItemCaseSensitive(json, "hobbies");
以上代碼中,我們首先創建一個cJSON對象,然后從JSON字符串中解析出該對象。接著,我們使用cJSON_GetObjectItemCaseSensitive函數獲取JSON對象中的鍵值。由于hobbies是一個數組,我們可以使用cJSON_IsArray函數判斷是否為數組,如果是,就可以使用cJSON_GetArrayItem函數獲取數組元素。
if(cJSON_IsArray(hobbies)){ printf("hobbies: "); cJSON *hobby = NULL; cJSON_ArrayForEach(hobby, hobbies){ printf("%s, ", cJSON_GetStringValue(hobby)); } }
以上代碼中,我們遍歷hobbies數組,并使用cJSON_GetStringValue函數獲取數組元素的字符串值。最后,我們將獲取到的字符串輸出到控制臺。
在使用cJSON解析JSON字符串時,需要注意內存管理。需要手動釋放解析出的cJSON對象。
cJSON_Delete(json);
以上為釋放cJSON內存的代碼段。