色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

c json與list互轉

錢琪琛1年前9瀏覽0評論

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數據的查詢、修改、刪除以及格式化輸出等,能夠很好地滿足各種開發場景下的需求。