加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

QT 使用jsoncpp

发布时间:2020-12-16 19:21:51 所属栏目:百科 来源:网络整理
导读:QT 使用jsoncpp 编译jsoncpp 编译前先安装好python,scons,解压jsoncpp到目录e:jsconcpp,查看目录下的readme,有关于编译的说明的,根据说明做相应操作就可以。 打开 Visual Studio 2005 Command Prompt 命令行,输入以下命令进行编译 scons platform =msvc8

QT 使用jsoncpp

编译jsoncpp

编译前先安装好python,scons,解压jsoncpp到目录e:jsconcpp,查看目录下的readme,有关于编译的说明的,根据说明做相应操作就可以。

打开Visual Studio 2005 Command Prompt命令行,输入以下命令进行编译

sconsplatform =msvc80

编译完成后在子目录libsmsvc80就生成了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

http://jsoncpp.sourceforge.net/index.html

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读