void CTunerServer::set_mute(svcServiceRequest *req)
{
const Json::Value ¶m = req->getParam();
int rv = 0;
bool muteStatus = GET_JSON_VAL_UINT(param, "status");
//是否含有键值"status"
if( !param.isMember("status") ){
DINFOP("set_mute:param is nullValue",SLOG2_FA_END);
rv = m_tunercore.mute();
}else{
DINFOP("set_mute:muteStatus=%2d",SLOG2_FA_UNSIGNED(muteStatus),SLOG2_FA_END);
rv = m_tunercore.mute(muteStatus);
}
Json::Value ret_value;
ret_value["rv"] = rv;
req->returnReply(ret_value);
}
上述代码中并不知道 const Json::Value ¶m是否有相应的键值。
方法1:
//判断是否有键值status
param.isMember("status")
方法2:
//由于访问了一个不存在的key,所以会自动添加一个这样的字段,只不过其value为空
param["status"].isNull();
方法2:
//由于访问了一个不存在的key,所以会自动添加一个这样的字段,但是其value为空
if(param["status"].type() == Json::nullValue)
{
}
其中可以看出,方法1为最优解。