C++Jsoncppオープンソースライブラリjson列の構造、アクセス、変更
最近、Json列の操作に関するコードを開発し、json列へのアクセスはよく知られていますが、ノードのvalue値を修正してもあまりやったことがありません.自分で試して成功しました.以下はキーコードです.
以上のコードは、json列を構築し、アクセスノードを巡回し、その値を変更します.注意すべき点は、各ノードにアクセスするときに、ノードオブジェクトを取得するときに参照を使用することです.そうすれば、私たちの変更を本当に有効にすることができます.アクセスのみであれば、リファレンスを使用しなくてもいいです.
Json::Value jsonListObj;;
Json::Value jsonObj;
Json::Value jsonArray;
Json::Value Obj;
Obj["TollgateID"] = Json::Value("123");
// json
jsonArray.append(Obj);
jsonObj["NonMotorVehicleObject"] = jsonArray;
jsonListObj["NonMotorVehicleListObject"] = jsonObj;
// json str
std::string jsonData = jsonListObj.toStyledString();
printf("before jsonData[%s]
", jsonData.c_str());
// str
Json::Reader reader;
Json::Value jsonValue;
if (!reader.parse(jsonData.c_str(),jsonValue))
{
return;
}
// json
Json::Value& listObject = jsonValue["NonMotorVehicleListObject"];
if (listObject.isObject())
{
Json::Value& objectArray = listObject["NonMotorVehicleObject"];
if (objectArray.isArray())
{
for (size_t i = 0; i < objectArray.size(); i++)
{
Json::Value& object = objectArray[i];
object["TollgateID"] = "321";
}
}
}
printf("after jsonData[%s]
", jsonValue.toStyledString().c_str());
以上のコードは、json列を構築し、アクセスノードを巡回し、その値を変更します.注意すべき点は、各ノードにアクセスするときに、ノードオブジェクトを取得するときに参照を使用することです.そうすれば、私たちの変更を本当に有効にすることができます.アクセスのみであれば、リファレンスを使用しなくてもいいです.