天天看點

VS2008中使用JSONCPP方法小結

Introduction JSON (JavaScript Object Notation)  is a lightweight data-interchange format. It can represent integer, real number, string, an ordered sequence of value, and a collection of name/value pairs. For detail: http://www.json.org/index.html C++要使用JSON來解析資料,一般采用 jsoncpp

.

下載下傳jsoncpp後,按ReadMe文檔的說法是要先安裝的,但是安裝比較麻煩。然而事實上,我們并不需要安裝,就可以直接使用。

方法一:直接拷貝源檔案。這個方法比較簡單,但不推薦,因為不便于項目管理。

  1. VS2008裡建立一個空的控制台程式(用作測試jsoncpp是否可用),名為: TestJSON
  2. 解壓下載下傳好的檔案:jsoncpp-src-0.5.0.tar.gz
  3. 将 jsoncpp-src-0.5.0\include 目錄下的json檔案夾拷貝至 TestJSON 工程目錄下
  4. 将 jsoncpp-src-0.5.0\src\lib_json 目錄下的所有.h, .cpp 檔案全部拷貝至 TestJSON 工程目錄下
  5. 在VS2008裡引入工程目錄下剛剛從 jsoncpp-src-0.5.0 導入的檔案,如圖1
  6. 在VS2008裡建立main.cpp來測試jsoncpp是否可用。代碼見文章末尾main.cpp

方法二:使用靜态連結庫

  1. 利用VS2008打開jsoncpp-src-0.5.0\makefiles\vs71目錄下的jsoncpp.sln,會出現三個Project:jsontest, lib_json, test_lib_json
  2. 在lib_json上 右擊-->Properties-->Configuration Properties-->C/C++-->Code Generation,注意右側的Runtime Library的内容,如圖2,看完箭頭所指的東西就可以點确定,關掉屬性頁。
  3. 編譯lib_json,顯示編譯成功後,在jsoncpp-src-0.5.0\build\vs71\debug\lib_json目錄下會生成一個json_vc71_libmtd.lib,将這個lib拷貝至TestJSON工程目錄下。
  4. 将jsoncpp-src-0.5.0\include\json目錄下的所有.h檔案拷貝至TestJSON工程目錄下,并在工程Header Files引入.
  5. 将方法一裡的main.cpp添加到工程中,并在工程名上 右擊-->Properties-->Configuration Properties-->C/C++-->Code Generation, 将Runtime Library改成圖2箭頭所示内容。
  6. 在工程名上 右擊-->Properties-->Configuration Properties-->Linker-->Input, 在Additional Dependencies裡填寫json_vc71_libmtd.lib,然後确定,編譯就行了。

圖1:

VS2008中使用JSONCPP方法小結

圖2:

VS2008中使用JSONCPP方法小結
VS2008中使用JSONCPP方法小結
VS2008中使用JSONCPP方法小結
/* 測試jsoncpp的使用
 * [email protected]
 */

#include <iostream>
#include "json/json.h"

using namespace std;
using namespace Json;    //json的命名空間

int main()
{
    /*JSON DATA as following:            //一個json類型的資料    
    {
        "test : 5
    }*/

    string test = "{\"test\" : 5}";        //儲存上文的json類型的資料

    //以下涉及json的操作,将在後文中涉及,此處為簡單應用,不解釋,你懂的
    Reader reader;
    Value value;

    if (reader.parse(test, value))
    {
        int i = 0;

        if (!value["test"].isNull())
        {
            i = value["test"].asInt();
            cout << i << endl;
        }
    }

    return 0;
}      
VS2008中使用JSONCPP方法小結

繼續閱讀