1. 程式人生 > >Jsoncpp在linux中的安裝、編譯及其簡單應用

Jsoncpp在linux中的安裝、編譯及其簡單應用

1. 準備工作

2. Jsoncpp介紹

JSON(JavaScript Object Notation) 是一種輕量級的資料交換格式。 易於人閱讀和編寫。同時也易於機器解析和生成。
它基於JavaScript Programming Language, Standard ECMA-262 3rd Edition -
December 1999的一個子集。 JSON採用完全獨立於語言的文字格式,但是也使用了類似於C語言家族的習慣(包括C, C++, C#,
Java, JavaScript, Perl, Python等)。 這些特性使JSON成為理想的資料交換語言。

JSON建構於兩種結構:

“名稱/值”對的集合(A collection of name/value
pairs)。不同的語言中,它被理解為物件(object),紀錄(record),結構(struct),字典(dictionary),雜湊表(hash
table),有鍵列表(keyed list),或者關聯陣列 (associative array)。 值的有序列表(An ordered
list of values)。在大部分語言中,它被理解為陣列(array)。
這些都是常見的資料結構。事實上大部分現代計算機語言都以某種形式支援它們。這使得一種資料格式在同樣基於這些結構的程式語言之間交換成為可能。

詳細可參考:
http://www.cnblogs.com/kex1n/archive/2011/12/02/2272328.html

3.解壓並配置SCons

將下載的 Scons壓縮包,進行解壓:

$tar -xvf scons-src-2.5.1.tar.gz 

配置環境變數:

export SCONS_PATH=****** /scons-2.1.0
export SCONS_LIB_DIR=$SCONS_PATH/engine

4.解壓配置Jsoncpp

將下載的 jsoncpp壓縮包,進行解壓:

$tar -xvf jsoncpp-src-0.5.0.tar.gz 

配置環境變數:

export JSONCPP_PATH=/*******/jsoncpp-src-0.5.0

5.編譯Jsoncpp

做好以上準備工作後,對jsoncpp進行編譯:
首先,cd到jsoncpp解壓的目錄下:

cd jsoncpp-src-0.5.0
python $SCONS_PATH/src/script/scons.py platform=linux-gcc

6.舉例

寫了個小Demo,將系統內檔案內容讀取,並組織成Json串:

#include <iostream>
#include <cstdio>
#include <stdio.h>
#include <string.h>
#include <memory>
#include <exception>
#include <fstream>
#include "json/json.h"

using namespace std;

int main(int argc, char **argv) {  
    Json::Value root; 
    Json::Value header;     
    Json::Value arrayObj;  
    Json::Value item; 

    //Json頭資訊
    header["pro"] = "17";
    header["service_type"] = "GPS11";

    //open檔案
    char buffer[256];  
    ifstream in("test.txt");  
    int i = 0;
    if (! in.is_open())  
    {
        cout << "Error opening file";
        exit (1); 
    }  
    while (!in.eof() )  
    {  
        in.getline (buffer,100);  
        item[buffer] = i;  
        i++;
        arrayObj.append(item);
        item.clear();

    } 
    root["HEADER"] = header;
    root["BODYLIST"] = arrayObj;  

    std::string out = root.toStyledString();  
    std::cout << out << std::endl;   
    in.close(); 

    return 0;  
}  

效果:
這裡寫圖片描述