在WINDOWS MOBILE中如何利用jsoncpp解析和创建json串
2013-05-06 11:00:39| 分类: WINCE开发 | 标签: |举报 |字号大中小 订阅
参考工程下载:
下载: 测试工程.rar
jsonCPP下载:
下载: jsoncpp-src-0.6.0-rc2.tar.gz
下载: jsoncpp-src-0.5.0.tar.gz
在java和苹果的开发中碰到json串时有现成的类或库可以用,但在windows mobile就没有这么幸运了,幸好我们有jsonCPP。
jsonCPP是一个非常好的开源的json解析和创建的API,json官方都推荐的。
首先在VS2008创建一个对话框的工程,把jsonCPP源代码目录的文件加入到工程中
在WINDOWS MOBILE中如何利用jsoncpp解析和创建json串 - xzhoumin - MMZHOU的博客
然后设置头文件位置
在WINDOWS MOBILE中如何利用jsoncpp解析和创建json串 - xzhoumin - MMZHOU的博客
添加测试代码,即可测试了,
1、测试创建json串
Json::Value root;//表示一个json格式的对象
Json::Value arrayObj;
Json::Value item;
for(int i=0;i<10;i++)
{
item["key"]=i;
arrayObj.append(item);
}
root["key1"]="value1";
root["key2"]="value2";
root["array"]=arrayObj;
// std::string out=root.toStyledString(); // 格式化输出
Json::FastWriter write;
std::string out=write.write(root); // 非格式化输出
2、测试完整解析
Json::Reader reader;
Json::Value root;
bool parsingSuccessful = reader.parse( Cstring2string(m_jsonValue), root );
if ( parsingSuccessful )
{
CString strResult;
printValueTree(strResult,root);
m_jsonResult = strResult;
UpdateData(FALSE);
}
3、测试解析
std::string strValue=“{“key1”:“value1”,“array”:[{“key2”:“value2”},{“key2”:“value3”},{“key2”:“value4”}]}”;
Json::Reader reader;//json解析
Json::Value value;//表示一个json格式的对象
if(reader.parse(strValue,value))//解析出json放到json中区
{
std::string out=value["key1"].asString();
std::cout<<"key1=";
std::cout<<out<<std::endl;
const Json::Value arrayObj=value["array"];//迭代器
for (int i=0; i < arrayObj.size();i++)
{
out=arrayObj[i]["key2"].asString();
std::cout<<out;
if(i!=arrayObj.size()-1)
std::cout<<std::endl;;
}
}
如果需要用库的方式调用,首先参考我的上一篇博客生成jsoncpp库
然后在具体工程中引用这个库,就不需要加入jsoncpp的源代码了,注意需要加入预处理器 JSON_DLL
参考资料:
http://blog.sina.com.cn/s/blog_610c1cad010140ho.html