Linux平台下C++使用JsonCPP解析Json字符串
JsonCPP安装
安装 scons
下载地址:
http://sourceforge.net/projects/scons/files/scons/2.1.0/scons-2.1.0.tar.gz/download
百度网盘:
https://pan.baidu.com/s/1tW57c9s3iCeoDi4OIDyEPQ 密码:2wd5
解压:
tar -zvxf scons-2.1.0.tar.gz
进入到解压目录scons-2.1.0,执行命令:
sudo python setup.py install
安装 JsonCPP
下载地址:
http://sourceforge.net/projects/jsoncpp/
解压:
tar -zvxf jsoncpp-src-0.5.0.tar.gz
进入到jsoncpp解压目录下,执行命令:
sudo scons platform=linux-gcc
还要以下两步操作:
- 将
/jsoncpp-src-0.5.0/include/
目录下的json
文件夹拷贝到/usr/local/include/
下 - 将
jsoncpp-src-0.5.0/libs/linux-gcc-4.9.1/
目录下的libjson_linux-gcc-4.9.1_libmt.a
拷贝到/usr/local/lib/
下,并为了方便使用,将其重命名为libjsoncpp.a
到此,配置已经完成,只需要在代码中添加头文件:#include <json/json.h>
即可。
程序测试
注意:在编译里指定动态链接库的地址:-ljsoncpp
测试程序:
int main()
{
string jsonStr = "{\"userName\":\"123456\",\"userPassword\":\"111111\"}";
Json::Reader reader;
Json::Value value;
reader.parse(jsonStr,value);
Json::Value::Members member = value.getMemberNames();
for(Json::Value::Members::iterator iter = member.begin();iter != member.end(); ++iter)
{
cout<<(*iter)<<endl; //获得key
cout<<value[*iter].asString()<<endl; //获得value
}
return 0;
}
编译:
注意:链接库-ljsoncpp
的名字和你拷贝到 /usr/local/lib/
下时重命名有关
g++ -o JsonTest JsonTest.cpp -ljsoncpp
问题
如果找不到路径的错误,需要编辑/etc/ld.so.conf
文件,此文件记录了编译器编译时使用的动态库路径!那我们把/usr/local/lib
路径加入到文件末尾就可以了!