1
私はjsoncppを使用しています。以下のようなデータセットがあります。いくつかのノードを検索して配列要素を削除したい場合は、 {}で完全に取り除くことは可能ですか?jsoncell要素を完全に削除する方法(jsoncppを使用)
データの前に削除:削除した後
{
"any" : [
{
"any_id" : "a1",
"infos" : [
{
"info_id" : "i1",
"path" : "",
"version" : "1.0"
}
]
},
{
"any_id" : "a2",
"infos" : [
{
"info_id" : "i1",
"path" : "",
"version" : "1.0"
},
{
"info_id" : "i2",
"path" : "D:\\",
"version" : "1.0"
},
{
"info_id" : "i3",
"path" : "",
"version" : "1.0"
},
{
"info_id" : "i4",
"path" : "D:\\",
"version" : "1.0"
}
]
},
{
"any_id" : "a3",
"infos" : [
{
"info_id" : "i4",
"path" : "",
"version" : "1.0"
}
]
}
]
}
データ:C++での
{
"any" : [
{
"any_id" : "a1",
"infos" : [
{
"info_id" : "i1",
"path" : "",
"version" : "1.0"
}
]
},
{
"any_id" : "a2",
"infos" : [
{
"info_id" : "i1",
"path" : "",
"version" : "1.0"
},
{
},
{
"info_id" : "i3",
"path" : "",
"version" : "1.0"
},
{
}
]
},
{
"any_id" : "a3",
"infos" : [
{
"info_id" : "i4",
"path" : "",
"version" : "1.0"
}
]
}
]
}
を、私は次のコードを持って、配列の要素を削除するany_idとパスを探します。
for (Json::ValueIterator &itr_any = data["any"].begin();
itr_any != data["any"].end(); ++itr_any)
{
if (0 == _stricmp((*itr_any)["any_id"].asString().c_str(), "a2"))
{
for (Json::ValueIterator &itr_res = (*itr_any)["infos"].begin();
itr_res != (*itr_any)["infos"].end(); ++itr_res)
{
if (0 == _stricmp((*itr_res)["path"].asString().c_str(), "D:\\"))
{
(*itr_res).clear();
}
}
}
}
おかげで、それは私がそれがで成し遂げるために管理するものです終わり :) – hghew