C++Jsoncppオープンソースライブラリjson列の構造、アクセス、変更

1311 ワード

最近、Json列の操作に関するコードを開発し、json列へのアクセスはよく知られていますが、ノードのvalue値を修正してもあまりやったことがありません.自分で試して成功しました.以下はキーコードです.
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列を構築し、アクセスノードを巡回し、その値を変更します.注意すべき点は、各ノードにアクセスするときに、ノードオブジェクトを取得するときに参照を使用することです.そうすれば、私たちの変更を本当に有効にすることができます.アクセスのみであれば、リファレンスを使用しなくてもいいです.