QT 使用jsoncpp
编译jsoncpp
编译前先安装好python,scons,解压jsoncpp到目录e:\jsconcpp,查看目录下的readme,有关于编译的说明的,根据说明做相应操作就可以。
打开Visual Studio 2005 Command Prompt命令行,输入以下命令进行编译
sconsplatform =msvc80
编译完成后在子目录libs\msvc80就生成了json_vc80_libmt.lib,这就是此库的静态版本了。想动态编译,但不知道怎么搞,readme没有说明。
在QT中使用jsconcpp
更改pro项目文件
对项目进行更改,引用相应的库和头文件路径
INCLUDEPATH+=e:/jsconcpp/jsoncpp-src-0.6.0-rc2/include/json
LIBS+=-Le:/jsconcpp/jsoncpp-src-0.6.0-rc2/libs/msvc80-ljson_vc80_libmt
QMAKE_CFLAGS_RELEASE=-O2/MT
QMAKE_CFLAGS_DEBUG=-Zi/MT
QMAKE_CXXFLAGS_RELEASE=$$QMAKE_CFLAGS_RELEASE
QMAKE_CXXFLAGS_DEBUG=$$QMAKE_CFLAGS_DEBUG
Jsoncpp使用非常简单,就汲到几个类
Json::Value //代表每个值,可以转换成不同的数据类型
Json::Reader //对json字符串或者文件进行反序列化
Json::FastWriter //序列化json字符串,输出的是多字节内容,如果需要utf8格式,需要自己对输出的字符串进行转换
Jsoncpp序列例子
voidwriteDemo()
{
Json::Valueroot;
Json::ValuearrayObj;
Json::Valueitem;
Json::FastWriterwriter;
for(inti=0;i<10;i++)
{
item["key"]=i;
arrayObj.append(item);//数组项添加
}
root["key1"]="value1";
root["key2"]="value2";
root["key3"]=0x100;
root["key4"]=true;
root["key5"]="中国人";
item=root["key5"];
root["array"]=arrayObj;
std::cout<<root.toStyledString();
std::cout<<writer.write(root);
}
Jsconcpp反序列化例子
voidreadDemo()
{
std::fstreamfile;
file.open("test2.json");//文件的字符集为utf8
Json::Readerreader;
Json::Valueroot;
Json::Valueitem;
reader.parse(file,root);
item=root["key5"]; //key5的内容为"中国人"
//读写utf8的内容
QStringstr=QString::fromUtf8(item.asstring().c_str());
std::cout<<str.toStdString()<<endl;
}
参考
JsonCpp Documentation
原文地址:https://www.jb51.cc/json/290417.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。