linux下正确安装jsoncpp
要安装jsoncpp,首先要下载好scons,再去安装jsoncpp
scons下载地址:wget http://prdownloads.sourceforge.NET/scons/scons-2.2.0.tar.gz
Jsoncpp 下载地址 http://sourceforge.net/projects/jsoncpp/files/latest/download?_test=goal
以上的下载地址未用过,但是下面的命令确实可以实现JsonCPP安装成功(下面命令都是小写,不知道为什么提交后部分变成大写)
安装步骤如下:#tar -zxvf scons-2.1.0.tar.gz #cd scons-2.1.0
#python setup.py install
#tar -zxvf jsoncpp-src-0.5.0.tar.gz
#cd jsoncpp-src-0.5.0
#scons platform=linux-gcc
//这里操作的动态库文件(.so)
#mv libs/linux-gcc-4.4.7/libjson_linux-gcc-4.4.7_libmt.so /lib
#ln /lib/libjson_linux-gcc-4.4.7_libmt.so /lib/libjson.so
#mv include/json/ /usr/include/
#ldconfig
#./bin/linux-gcc-4.4.7/test_lib_json
【注意这里的版本号可能不同】先通过cd libs进入libs目录,再用“ls”命令查看自己的版本号,然后在上述步骤中修改成自己的版本号即可
Testing ValueTest/size: OK
Testing ValueTest/isObject: OK
Testing ValueTest/isArray: OK
Testing ValueTest/isBool: OK
Testing ValueTest/isInt: OK
Testing ValueTest/isUInt: OK
Testing ValueTest/isDouble: OK
Testing ValueTest/isString: OK
Testing ValueTest/isNull: OK
All 9 tests passed
上面操作动态库文件的命令行其实也可对静态库进行操作(当前目录jsoncpp-src-0.5.0)
#mv libs/linux-gcc-4.4.7/libjson_linux-gcc-4.47_libmt.a /usr/local/lib
#ln /usr/local/lib/libjson_linux-gcc-4.47_libmt.a /usr/local/lib/libjson.a
如果只对静态库转移的话,那.bin/linux-gcc-4.4.7/test_lib_json会报错
测试代码:
#include <iostream>
#include <string>
#include "json/json.h"
using namespace std;
int main() {
Json::Value json_temp;
json_temp["name"] = Json::Value("sharexu");
json_temp["age"] = Json::Value(18);
Json::Value root;
root["key_string"] = Json::Value("value_string");
root["key_number"] = Json::Value(12345);
root["key_boolean"] = Json::Value(false);
root["key_double"] = Json::Value(12.345);
root["key_object"] = json_temp;
root["key_array"].append("array_string");
root["key_array"].append(1234);
Json::FastWriter fast_writer;
std::cout << fast_writer.write(root);
Json::StyledWriter styled_writer;
std::cout << styled_writer.write(root);
string str_test = "{\"id\":1,\"name\":\"pacozhong\"}";
Json::Reader reader;
Json::Value value;
if (!reader.parse(str_test, value))
return 0;
string value_name = value["name"].asString();
cout << value_name << endl;
cout << value["name"];
if (!value["id"].isInt()) {
cout << "id is not int" << endl;
}
else {
int value_id = value["id"].asInt();
cout << value_id << endl;
}
return 0;
}
敲命令行时要加上-ljson。另在提醒一下,如果实在VS2017中建立linux控制台项目的话,要在项目属性->链接器->输入->库依赖项中加入json,项目才能编译成功。
上一篇: 前端AJAX发送后台请求处理400报错JS实现弹窗
下一篇: typescript——高级类型