cjson庫的使用

現在很流行json格式,現在項目中所有數據相關的格式也是用的這個,因為是c++開發,這就涉及到一個問題,C++中如何處理json格式,網上找了一個庫:cJSON,以下記錄一下項目中自己使用cJSON庫的一些心得。


  1. 如何替換string類型
    cJSON庫中沒有直接替換type是string的方法,但是項目中這個需求又很常見,這應該如何做呢?可以先刪除這個item,然后在增加一個,例如:
    {"key": "good"},我想把good改成test,那應該這樣做:
    cJSON_DeleteItemFromObject(pJsObj, "key");
    cJSON_AddStringToObject(pJsObj, "key", cJSON_CreateString("test"));
  2. 使用while循環把一個object加到json對象中
    cJSON* pJsChild = pJsDuplicate->child;
    while (pJsChild)
    {
    cJSON_AddStringToObject((cJSON*)ctx1, pJsChild->string, pJsChild->valuestring);
    pJsChild = pJsChild->next;
    }
  3. 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)就放在最后,這樣代碼邏輯就簡單了

零散的記錄了自己的使用心得~~~

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容