在C語言的開發中,對于Json數據的處理是非常常見的。而在Json數據處理中,cJSON是一個非常流行的Json解析庫。
而在cJSON庫中,CMap就是其中的一個非常重要的數據結構。它類似于其他語言中的Hash Map或者Dictionary,可以通過Key-Value的方式快速的存取、查找和修改Json中的數據。
而對于CMap的使用,首先需要初始化一個Map:
cJSON *root = cJSON_Parse(json); // 將json字符串轉化為json對象 cJSON *items = cJSON_GetObjectItem(root,"items"); // 獲取json中的items數組 int mapSize = cJSON_GetArraySize(items); /* 初始化Map */ cJSON *item = NULL; char *key = NULL; cJSON *value = NULL; cJSON *map = cJSON_CreateObject(); for (int i=0; ivaluestring; value = cJSON_GetObjectItem(item, "value"); cJSON_AddItemToObject(map, key, value); }
上面的代碼展示了如何利用CMap來將一個Json中的items數組轉化為一個Map。
而對于Map的使用,可以簡單地通過CMap提供的函數來實現:
/* 在Map中獲取Key對應的Value */ cJSON *getValueByKey(char *key) { return cJSON_GetObjectItem(map, key); } /* 在Map中添加新的元素 */ cJSON *addNewElement(char *key, cJSON *value) { cJSON_AddItemToObject(map, key, value); return map; } /* 在Map中刪除指定Key的元素 */ cJSON *deleteElement(char *key) { cJSON_DeleteItemFromObject(map, key); return map; } /* 在Map中修改指定Key的值 */ cJSON *changeValue(char *key, cJSON *newValue) { cJSON_ReplaceItemInObject(map, key, newValue); return map; } /* 在Map中遍歷元素 */ cJSON *element; char *mapKey; cJSON_ArrayForEach(element, map) { mapKey = element ->string; printf("%s: %s\n", mapKey, cJSON_Print(element ->value)); }
上面的代碼展示了CMap提供的一些常見操作函數。
總的來說,CMap是C語言Json解析中非常重要的一個部分,可以方便快捷地進行Json數據的存取和操作。
上一篇gdb打印json串
下一篇python 視覺系統