C++ 获取 数据中的 数组 信息(小弟的技术分就剩下10分了!求各位大大帮帮忙)
我用
char * url1 = "http://messaging-a.365wos.org:9901/integrate/receive.action?time=";
char * url = (char*)malloc( strlen(url1) + strlen(time) + 1 );
strcpy (url, url1);
strcat (url, time);
fn_CallUUIM pCallUUIM = (fn_CallUUIM)GetProcAddress(hLib, "CallUUIM");
char* html = pCallUUIM(url); // html 得到的是接口返回的一个字符串
Jzon::Object recvData; //定义返回数据
recvData.Read(html); //读取html返回数据
std::string recvCode = recvData.Get("code").AsString(); // 获取html字符串中code值并转换成字符串
std::string recvTime = recvData.Get("time").AsString();
Jzon::Array &msgdata = recvData.Get("msgs").AsArray();
msgdata.Get(2).AsString();
CString str;
str = (CString)html;
// str = recvCode.c_str();
AfxMessageBox(str);
我用上述代码来实现 获取 一段数据中的某些信息,这段数据举例(类似)如下:
{"time":"13094508676","msgs":[{"param":{"status":"ONLINE","uuid":"1001"}, "msgtype":"0","sendtime":"2012-09-16 15:45:08", "cmdtype":"CMD_ONLINESTATUS"},{"param":{"status":"ONLINE","uuid":"1001"}, "msgtype":"0","sendtime":"2012-09-16 15:45:08", "cmdtype":"CMD_ONLINESTATUS"}], "code":"A00006"}
问题:
首先,我用Jzon::Array &msgdata = recvData.Get("msgs").AsArray();能获取到数组 "msgs[]" 的信息,但是我不知道怎么把它提取出来,像提取recvCode一样能进行字符转换,然后我要根据我获取到的 "msgs[]" 中的数据 再 分别提取出 param, msgtype, cmdtype, sendtime...对应的数据,比如 msgtype == 0 ;
各位大大,我不知道这个怎么做,请你们帮帮忙,一直在线等~~~
[解决办法]
就是解析字符串吧,CString类的一些函数应该就可以做到吧CString::Find/Mide/Left/Right()
[解决办法]
Jzon 库没用过, 看数据像 JSON.
如果是数组,应该重载了 []操作符.
像
msgdata[0].Get("msgtype").AsString()
之类的..
找找类的成员函数,总会有的.
[解决办法]
用string ,自己写一些专门用于你程序的函数,比如寻找两个逗号之间的文本,
CString 的话写起来也不难,string的话有StL的支持代码少一点