jsoncpp用法簡述

2021-06-18 21:18:31 字數 2878 閱讀 2007

jsoncpp是乙個使用

c++語言實現的物件導向的

json

庫。

jsoncpp提供的介面中有

3個核心類:

reader

、writer

、value。

reader

類負責從字串或者輸入流中載入

json

文件,並進行解析,生成代表

json文件的

value

物件。

writer類負責將記憶體中的

value

物件轉換成

json

文件,可輸出到檔案或者是字串中。

value類的物件代表乙個

json

值,既可以代表乙個文件,也可以代表文件中乙個值。

乙個json

文件的大致過程如下:

//準備json源資料,如讀取文件:std::stringstrdoc=readfromfile(… );

。。。

//生命頂級

value物件

json::valueroot;

//宣告

reader物件

json::reader_reader;

//解析json文件

_reader.paser(strdoc,root);

json::valuetype有8種,以下是定義。 enum json::valuetype

enumerator:

nullvalue       'null' value

intvalue     signed integer value

uintvalue       unsigned integer value

realvalue       double value

stringvalue     utf-8 string value.

booleanvalue   bool value

arrayvalue      array value (ordered list)

objectvalue    object value (collection of name/value pairs).

static

void printvaluetree( file *fout, json::value &value, const std::string &path = "."

) }break

;case

json::objectvalue:\n"

, path.c_str() );

json::value::members members( value.getmembernames() );

std::sort( members.begin(), members.end() );

std::

string suffix = *(path.end()-1) == '

.' ? "" : "."

;

for ( json::value::members::iterator it = members.begin(); it != members.end(); ++it )

}break

;default

:

break

; } 

}

1) json::reader 是用於讀取json物件的值。

用法:json::value reader_object;

json::reader reader;

const char* reader_document = "";

if (!reader.parse(reader_document, reader_object))

return 0;

std::cout << reader_object["path"] << std::endl;

std::cout << reader_object["size"] << std::endl;

結果:"/home/test.***"

4000 

2) 增加子節點

json::value root;

json::value leaf;

root["leaf_node"] = leaf;

4) 解析陣列值

jarray = root["key_array"];

for ( unsigned int i = 0; i < jarray.size(); i++ )

二. 通過使用writer將value轉換為json文件(string):

1) json::fastwriter用來快速輸出json物件的值,即。

用法:json::fastwriter writer;

std::cout << writer.write(json_media)<< std::endl;

結果:,"path":"/home/***/test.***"}

2) json::styledwriter用來格式化輸出json物件的值。

用法:json::styledwriter writer;

std::cout << writer.write(json_media) << std::endl;

結果:,

"path" : "/home/***/test.***"}

JOIN用法簡述

join有以下幾種用法 left join left outer join 左向外聯接,得到左表中的所有行與右表的聯接,右表中無匹配聯接條件的值時返回空值.right join right outer join 右向外聯接,得到右表中的所有行與左表的聯接,左表中無匹配聯接條件的值時返回空值.full...

container of用法簡述

在學習linux驅動的過程中,遇到乙個巨集叫做container of。該巨集定義在include linux kernel.h中,首先來貼出它的 define container of ptr,type,member 它的作用顯而易見,那就是根據乙個結構體變數中的乙個域成員變數的指標來獲取指向整個...

Screen 用法簡述

screen是一款由gnu計畫開發的用於命令列終端切換的自由軟體。使用者可以通過該軟體同時連線多個本地或遠端的命令行會話,並在其間自由切換。gnu screen可以看作是視窗管理器的命令列介面版本。它提供了統一的管理多個會話的介面和相應的功能。1.1 會話恢復 只要screen本身沒有終止,在其內部...