VC6写法
CString str ="{\"data\":\"wangjie\",\"retmsg\":\"12\",\"retcode\":\"16\"}";
CString dataproperty = "data";
CString data = str.Mid(1,str.GetLength()-2);
data = data.Mid(data.Find(dataproperty) + dataproperty.GetLength() + 3 , data.GetLength() - data.Find(dataproperty) - dataproperty.GetLength() - 3);
data = data.Mid(0,data.Find("\""));
VC++ 写法
#include <iostream>
using namespace std;
int main() {
string str ="{\"data\":\"wangjie\",\"retmsg\":\"12\",\"retcode\":\"16\"}";
string dataproperty = "retcode";
string data = str.substr(1,str.size()-2);
data = data.substr(data.find(dataproperty) + dataproperty.size() + 3 , data.size() - data.find(dataproperty) - dataproperty.size() - 3);
data = data.substr(0,data.find("\""));
cout << data;
return 0;
}
多列数据
VC++写法
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
class User {
private:
string username;
public: User() {
}
void setUserName(string UserName) {
username = UserName;
};
string getUserName() {
return username;
}
~User() {
}
};
int main() {
string str ="{\"data\":\"wangjie\",\"retmsg\":\"12\",\"retcode\":\"16\",\"retdata\":[{\"username\":\"ceseiwr2\"},{\"username\":\"cesei2\"}]}";
string dataproperty = "retdata";
string data = str.substr(1,str.size()-2);
data = data.substr(data.find(dataproperty) + dataproperty.size() + 3 , data.size() - data.find(dataproperty) - dataproperty.size() - 3);
data = data.substr(0,data.find("]"));
vector<User> listuser;
while(data.find("},{") != -1) {
string userstr = data.substr(0,data.find("},{") + 1);
string propertydata = "username";
string username = userstr.substr(userstr.find(propertydata) + propertydata.size() + 3 , userstr.size() - userstr.find(propertydata) - propertydata.size() - 3);
username = username.substr(0,username.find("\""));
User user;
user.setUserName(username);
listuser.push_back(user);
cout << listuser.size() << endl;
if(data.find("},{") != -1) {
data = data.substr(data.find("},{") + 2,data.size()-data.find("},{"));
if(data.find("},{") == -1) {
userstr = data;
string username = userstr.substr(userstr.find(propertydata) + propertydata.size() + 3 , userstr.size() - userstr.find(propertydata) - propertydata.size() - 3);
username = username.substr(0,username.find("\""));
User userf;
userf.setUserName(username);
listuser.push_back(userf);
}
}
cout << listuser.size() << endl;
}
cout<<listuser[0].getUserName()<<endl;
return 0;
}
VC6写法
CString str ="{\"data\":\"wangjie\",\"retmsg\":\"12\",\"retcode\":\"16\",\"retdata\":[{\"username\":\"ceseiwr2\"},{\"username\":\"cesei2\"}]}";
CString dataproperty = "retdata";
CString data = str.Mid(1,str.GetLength()-2);
data = data.Mid(data.Find(dataproperty) + dataproperty.GetLength() + 3 , data.GetLength() - data.Find(dataproperty) - dataproperty.GetLength() - 3);
data = data.Mid(0,data.Find("]"));
//vector<User> listuser;
while(data.Find("},{") != -1) {
CString userstr = data.Mid(0,data.Find("},{") + 1);
CString propertydata = "username";
CString username = userstr.Mid(userstr.Find(propertydata) + propertydata.GetLength() + 3 , userstr.GetLength() - userstr.Find(propertydata) - propertydata.GetLength() - 3);
username = username.Mid(0,username.Find("\""));
User user;
user.setUserName(username);
MessageBox(username);
//listuser.push_back(user);
if(data.Find("},{") != -1) {
data = data.Mid(data.Find("},{") + 2,data.GetLength()-data.Find("},{"));
if(data.Find("},{") == -1) {
userstr = data;
CString username = userstr.Mid(userstr.Find(propertydata) + propertydata.GetLength() + 3 , userstr.GetLength() - userstr.Find(propertydata) - propertydata.GetLength() - 3);
username = username.Mid(0,username.Find("\""));
User userf;
userf.setUserName(username);
MessageBox(username);
//listuser.push_back(userf);
}
}
}