C語言中的JSON解析庫,在進行json字符串轉換時,我們常常要將JSON數據轉成對應的列表和map,這樣更方便后續的數據處理。下面我們來看看如何使用C語言編寫代碼實現json string轉listmap。
// 引入JSON解析庫 #include "cJSON.h" // 定義一個方法,將json字符串轉成listmap void jsonToListMap(const char *jsonStr, cJSON** listmap) { // 解析json字符串 cJSON *root = cJSON_Parse(jsonStr); if (!root) { printf("JSON解析失敗: %s\n", cJSON_GetErrorPtr()); return; } // 判斷解析結果類型,如果是一個對象,轉換為列表 if(root->type == cJSON_Object) { *listmap = cJSON_CreateArray(); cJSON *current = root->child; while(current) { cJSON *item = cJSON_CreateObject(); cJSON_AddStringToObject(item, "key", current->string); cJSON_AddItemToObject(item, "value", current->value); cJSON_AddItemToArray(*listmap, item); current = current->next; } } else if(root->type == cJSON_Array) { // 如果是一個數組,轉換為map *listmap = cJSON_CreateObject(); int index = 0; cJSON *current = root->child; while(current) { cJSON_AddItemToObject(*listmap, itoa(index++), current); current = current->next; } } // 釋放內存 cJSON_Delete(root); }
上述代碼中,我們使用了CJSON庫的方法來解析JSON字符串,并將得到的結果轉換為相應的列表或map。通過這樣一種方式,我們可以方便地將一個復雜的JSON數據結構轉換為易于處理的列表或map,更好地進行后續的數據處理和分析。