C++ Jsoncpp开源库 json串的构造、访问和修改

最近开发关于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]\n", 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]\n", jsonValue.toStyledString().c_str());

以上代码是构造了一个json串,以及遍历访问节点,并且修改其值。需要注意的一点是:在访问各个节点的时候,在获取某节点对象时,我使用的是引用,只有这样才能真正将我们的修改生效。如果仅仅只是访问的话,您可以不使用引用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值