本文整理汇总了C++中json::value::decodeJson方法的典型用法代码示例。如果您正苦于以下问题:C++ value::decodeJson方法的具体用法?C++ value::decodeJson怎么用?C++ value::decodeJson使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类json::value
的用法示例。
在下文中一共展示了value::decodeJson方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: process
virtual bool process() {
//后续支持yaaf和comm两种收发机制
string mode = input_value["ctrl"]["mode"].asString();
if(mode.find("yaaf://",0) == 0) {//yaaf收发机制,暂时未支持
errmsg="don't support :" + input_value["ctrl"]["mode"].asString();
return false;
}
else if(mode.find("udp://",0) == 0) {//普通udp收发机制
size_type ip_index = mode.find(':', 0);
if(ip_index == string::npos) {
errmsg="mode format err";
return false;
}
size_type port_index = mode.find(':', ip_index);
if(port_index == string::npos) {
errmsg="mode format err";
return false;
}
char ip[20], port[10];
mode.copy(ip, ip_index+1,port_index - ip_index);
mode.copy(port, port_index+1,mode.size() - port_index);
struct sockaddr_in dstaddr, srcaddr;
socket_len len = sizeof(struct sockaddr_in);
dstadd.sin_family = AF_INET;
dstaddr.sin_port = htons(atoi(port));
inet_aton(ip,&dstaddr.sin_addr);
int sk = socket(AF_INET,SOCK_DGRAM, 0);
int iRet;
if(sendto(sk,buf,cur_buflen ,0, (struct sockaddr *)&dstaddr, sizeof(dstaddr)) < 0) {
errmsg = "send error";
return false;
}
if((cur_buflen=recvfrom(sk, buf, 8196 , 0, (struct sockaddr *)&srcaddr, &len)) < 0) {
errmsg = "recv error";
return false;
}
output_value["head"]["version"] = header->GetVer();
output_value["head"]["type"] = header->GetType();
output_value["head"]["seqno"] = header->GetSeqno();
output_value["head"]["uin"] = header->GetUin();
output_value["head"]["cmd"] = header->GetCmd();
output_value["head"]["reserve"] = header->GetReserve();
Json::value tmp;
tmp.decodeJson(buf+sizeof(struct CmdHead),cur_buflen - sizeof(struct CmdHead));
output_value["body"] = tmp;
}
else { //其他不支持
errmsg="don't support :" + input_value["ctrl"]["mode"].asString();
return false;
}
//关注assert,输出结果到output_value
if(input_value.isMember("assert")) { //需要进行断言,暂时不支持
output_value["result"]["total"]="passed";
output_value["result"]["case_num"]=0;
} else {
output_value["result"]["total"]="passed";
output_value["result"]["case_num"]=0;
}
return true;
};