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();

  }

}

 

 

 

 

posted on 2012-11-05 10:30  仰望明天  阅读(983)  评论(0编辑  收藏  举报