install scons:
apt-get install scons
download jsoncpp zip:
https://github.com/open-source-parsers/jsoncpp/tree/master/test/data
unzip jsoncpp-master.zip
cd jsoncpp-master
scons platform=linux-gcc
将jsoncpp编译,在解压目录jsoncpp-src-0.5.0/libs/linux-gcc-3.4.6下可以看到生成了两个文件:
libjson_linux-gcc-4.6.1_libmt.a
libjson_linux-gcc-4.6.1_libmt.so
把.a文件拷贝到/usr/local/lib 目录下,为了方便编译给它改个名字libjsonlib.a
:
cp ../jsoncpp-master/libs/linux-gcc-4.8/libjson_linux-gcc-4.8_libmt.a /usr/local/lib/libjsonlib.a
将jsoncpp目录下的头文件件拷到自己的工程里就可以使用了:
cp -r ../jsoncpp-master/include/json/ ./
注意在编译里指定动态链接库的地址。 -ljsonlib :
g++ test.cpp -o test -ljsonlib
./test
基本使用示例
int mark = 1;
stringpwd("123456");
//json的字符串格式
string test="{\"id\":1,\"name\":\"kurama\"}";
//reader用于将字符串格式转化为json
Json::Reader reader;
//定义json变量
Json::Value value;
if(reader.parse(test,value))//字符串转json
{
if(!value["id"].isNull())
{
cout<<value["id"].asInt()<<endl;
//asString()用于转化为string,直接输出是带双引号的
cout<<value["name"].asString()<<endl;
}
}
Json::Value json;
//初始化json
json["mark"] = Json::Value(mark);
json["pass"] = Json::Value(pwd);
cout<<json["mark"].asInt()<<json["pass"].asString()<<endl;
string s;
//json转字符串
s = json.toStyledString();
cout<<s<<endl;
Json::Value js;
reader.parse(s,js);
cout<<js["pass"].asString()<<endl;
//转化为不带格式的字符串
Json::FastWriter writer;
std::string out = writer.write(js);