C語言作為一門廣泛應用于系統編程和底層開發的語言,其自帶的數據類型較少。因此,開發者需要使用一些第三方庫來處理復雜的數據類型。
在開發過程中,JSON作為一種輕量級的數據交換格式經常被使用。而C語言中并沒有原生支持JSON的數據類型。因此,我們需要使用第三方庫來處理JSON數據。其中,常用的開源庫有json-c、cJSON等。
下面介紹一下cJSON庫中如何將JSON數據與List互轉。
cJSON * list_to_json(List * list){ cJSON * root = cJSON_CreateArray(); char* key; char* value; ListItem * item; LIST_FOR_EACH_ITEM(item, list){ key = (char *)item->key; value = (char *)item->value; cJSON *j_item = cJSON_CreateObject(); cJSON_AddStringToObject(j_item, "key", key); cJSON_AddStringToObject(j_item, "value", value); cJSON_AddItemToArray(root, j_item); } return root; } List * json_to_list(cJSON * root){ List *list = new_list(); cJSON *j_item = NULL; int size = cJSON_GetArraySize(root); for (int i = 0; i < size; i++) { j_item = cJSON_GetArrayItem(root, i); char *key = cJSON_GetObjectItem(j_item, "key")->valuestring; char *value = cJSON_GetObjectItem(j_item, "value")->valuestring; list_append_key_value(list, key, value); } return list; }
其中,函數list_to_json用于將鏈表List轉化為JSON數據,具體實現為:
- 通過cJSON_CreateArray()創建一個JSON數組作為JSON數據的根。
- 遍歷鏈表,針對每一項構建一個JSON對象。
- 通過cJSON_AddStringToObject()將鍵值對添加到JSON對象中。
- 通過cJSON_AddItemToArray()將JSON對象添加到JSON數組中。
- 返回JSON數組根節點。
函數json_to_list用于將JSON數據轉化為鏈表List,具體實現為:
- 創建一個空的鏈表List。
- 通過cJSON_GetArraySize()獲取JSON數組的元素個數。
- 遍歷JSON數組,針對每個JSON對象獲取key和value的值。
- 通過list_append_key_value()函數將key和value添加到鏈表List中。
- 返回鏈表List。
通過以上兩個函數可以實現List與JSON數據的互轉。使用cJSON庫的優點在于,它不僅僅支持數據的讀寫,還支持JSON數據的查詢、修改、刪除以及格式化輸出等,能夠很好地滿足各種開發場景下的需求。
上一篇vue body 高度
下一篇python 輸出反斜線