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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章