現在很流行json格式,現在項目中所有數據相關的格式也是用的這個,因為是c++開發,這就涉及到一個問題,C++中如何處理json格式,網上找了一個庫:cJSON,以下記錄一下項目中自己使用cJSON庫的一些心得。
-
如何替換string類型
cJSON庫中沒有直接替換type是string的方法,但是項目中這個需求又很常見,這應該如何做呢?可以先刪除這個item,然后在增加一個,例如:
{"key": "good"}
,我想把good改成test,那應該這樣做:
cJSON_DeleteItemFromObject(pJsObj, "key");
cJSON_AddStringToObject(pJsObj, "key", cJSON_CreateString("test"));
-
使用while循環把一個object加到json對象中
cJSON* pJsChild = pJsDuplicate->child;
while (pJsChild)
{
cJSON_AddStringToObject((cJSON*)ctx1, pJsChild->string, pJsChild->valuestring);
pJsChild = pJsChild->next;
}
-
cJSON_Duplicate函數很有用
把一個josn文件通過cjson的方式轉成了cjson指針,因為里面有分配空間,所以需要自己調用cJSON_Delete負責釋放內存,要不就造成內存泄漏了。但是如果你是把一個cjson對象A加到另一個cjson對象B中,這個時候就不能掉cJSON_Delete(A)了,因為A的內存現在歸B管理了。在處理A的時候有一些判斷,異常case情況下還是會調用用cJSON_Delete(A),如果這個使用cJSON_Duplicate,可以讓整個程序代碼復雜度降低,滿足條件的情況下,就調用cJSON_Duplicate,在把復制后的cjson對象加到B中,cJSON_Delete(A)就放在最后,這樣代碼邏輯就簡單了
零散的記錄了自己的使用心得~~~