1. 程式人生 > >jsoncpp-刪除json陣列中的元素

jsoncpp-刪除json陣列中的元素

在使用jsoncpp庫的時候,要刪除json檔案中陣列物件的一個元素。jsoncpp提供一個函式是Removemember(),我在使用的時候發現,刪除是可以的,但是會留下一對花括號,然後在重新讀取檔案的時候,花括號也被讀進去,雖然沒有元素在裡面,也就是說無法實現完全刪除的狀態。

介於本人比較懶,不想去調式,不想看RemoveMember()怎麼實現的,為什麼會出現這種問題。就重新在原始碼中,新增一個函式去刪除。

在value.h中宣告:
 void isremove(ArrayIndex index);//刪除。引數為要刪除的json陣列中第幾個元素
在value.c中實現:
void
Value::isremove(ArrayIndex index
) { if (type_ == arrayValue){ #ifndef JSON_VALUE_USE_INTERNAL_MAP CZString key(index); ObjectValues::iterator it = value_.map_->find(key); if (it != value_.map_->end()){ ArrayIndex oldSize = size(); // shift left all items left, into the place of the "removed"
for (ArrayIndex i=index; i<oldSize-1; i++){ CZString key(i); (*value_.map_)[key] = (*this)[i+1]; } // erase the last one ("leftover") CZString keyLast(oldSize - 1); ObjectValues::iterator itLast = value_.map
_->find(keyLast); value_.map_->erase(itLast); } #else NOT SUPPORTED #endif } }

重新編譯原始碼,我弄的是無返回值的,你可以弄成BOOL,返回是否刪除成功就可以了。
有什麼問題可以問我
QQ:839505138