jsoncpp的使用
json是一种数据交换的格式,方便在不同语言间进行数据交互。譬如网站后台的服务程序一般由java或者c++语言实现,可以将计算的结果以json格式保存在类似ttserver之类的缓存中,供前端的php程序读取。下面是一条描述了两个视频信息的json格式数据
[{"tagweight":[{"tag":"江南","weight":300},{"tag":"style","weight":200}],"title":"江南style","vid":"sdgghg"},{"tagweight":[{"tag":"mtv","weight":200}],"title":"mtv","vid":"mrtsgg"}]
关于json数据格式的相关信息可以参见这个网址:http://www.json.org/json-zh.html
下面主要讲一下jsoncpp的使用,jsoncpp是一个用c++语言实现了json的reader,writer的静态库。在程序中需要包含jsoncpp的头文件和库文件。
封装json格式的数据使用json writer:
Json::Value root;
Json::Value videoval;
Json::Value twval;
Json::Value twvalarray;
videoval["vid"]="sdgghg";
videoval["title"]="江南style";
twval["tag"]="江南";
twval["weight"]=300;
twvalarray.append(twval);
twval["tag"]="style";
twval["weight"]=200;
twvalarray.append(twval);
videoval["tagweight"]=twvalarray;
root.append(videoval);
twvalarray.clear();
videoval["vid"]="mrtsgg";
videoval["title"]="mtv";
twval["tag"]="mtv";
twval["weight"]=200;
twvalarray.append(twval);
videoval["tagweight"]=twvalarray;
root.append(videoval);
Json::FastWriter writer;
string str=writer.write(root);(或者str=root.toStyledString(),带格式的输出)
解析json格式的数据使用json reader
Json::Value root;
Json::Value videoval;
Json::Value twval;
Json::Value twvalarray;
Json::Reader reader;
string str,vid,title,tag;
int weight;
reader.parse(str,root);
for(int i=0;i<root.size();i++)
{
vid=root[i]["vid"].asString();
title=root[i]["title"].asString();
twvalarray=root[i]["tagweight"];
for(int j=0;j<twvalarray.size();j++)
{
tag=twvalarray[j]["tag"].asString();
weight=twvalarray[j]["weight"].asInt();
}
}