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

還要以下兩步操作:

  1. /jsoncpp-src-0.5.0/include/目錄下的json文件夾拷貝到 /usr/local/include/
  2. 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路徑加入到文件末尾就可以了!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM