九九热这里直有精品,1区二区三区在线播放,玖玖爱在线观看资源,国产aⅴ综合网,午夜福利男女,日本亚洲欧美三级,日韩无码黄色导航,内射少妇13区,中文字幕高清网

您身邊的軟件定制專家--9年開發(fā)經(jīng)驗(yàn)為您護(hù)航

18678812288
0531-88887250

C指針原理(85)-json-glib剖析

文章作者:濟(jì)南軟件開發(fā) 時(shí)間:2016年12月20日

JSON 即 JavaScript Object Natation,它是一種輕量級(jí)的數(shù)據(jù)交換格式,非常適合于服務(wù)器與 JavaScript 的交互。是獨(dú)立于語言的文本格式,并且采用了類似于C語言家族的一些習(xí)慣。JSON用于描述數(shù)據(jù)結(jié)構(gòu),有以下形式存在。

· 對(duì)象 (object):一個(gè)對(duì)象以“{”開始,并以“}”退出。一個(gè)對(duì)象包含一系列非排序的名稱/值對(duì),每個(gè)名稱/值對(duì)之間使用“,”分區(qū)。

· 名稱/值(collection):名稱和值之間使用“:”隔開,一般的形式是:

{name:value}

一個(gè)名稱是一個(gè)字符串; 一個(gè)值可以是一個(gè)字符串,一個(gè)數(shù)值,一個(gè)對(duì)象,一個(gè)布爾值,一個(gè)有串行表,或者一個(gè)null值。

· 值的有串行表(Array):一個(gè)或者多個(gè)值用“,”分區(qū)后,使用“[”,“]”括起來就形成了這樣的列表,形如:

[collection, collection]

· 字符串:以""括起來的一串字符。

· 數(shù)值:一系列0-9的數(shù)字組合,可以為負(fù)數(shù)或者小數(shù)。還可以用“e”或者“E”表示為指數(shù)形式。

· 布林值:表示為 true 或者 false。

WEB開發(fā)

JSON最開始被廣泛的應(yīng)用于WEB應(yīng)用的開發(fā),隨著Web2.0的方興未艾,JSON在WEB數(shù)據(jù)傳輸領(lǐng)域占有重要的地位。[來源請(qǐng)求]

NoSQL數(shù)據(jù)庫

相對(duì)于傳統(tǒng)的關(guān)系型數(shù)據(jù)庫,一些基于文檔存儲(chǔ)的NoSQL非關(guān)系型數(shù)據(jù)庫選擇JSON作為其數(shù)據(jù)存儲(chǔ)格式,比較出名的產(chǎn)品有:MongoDB、CouchDB、RavenDB等。

下面是一個(gè)描述人員信息的json數(shù)據(jù)”

{

"firstName": "John",

"lastName": "Smith",

"male": true,

"age": 25,

"address":

{

"streetAddress": "21 2nd Street",

"city": "New York",

"state": "NY",

"postalCode": "10021"

},

"phoneNumber":

[

{

"type": "home",

"number": "212 555-1234"

},

{

"type": "fax",

"number": "646 555-4567"

}

]

}

 

 

JSON-GLib是一個(gè)庫,實(shí)現(xiàn)了全JSON分析器使用GLib和的GObject。使用JSON - GLib的是有可能的解析和生成有效的JSON數(shù)據(jù)結(jié)構(gòu),利用一個(gè)DOM的API。的JSON GLib的還提供GObject的一體化,提供了序列化和反序列化能力GObject的實(shí)例,從JSON數(shù)據(jù)類型。JSON是JavaScript對(duì)象符 號(hào),它可以用來表示對(duì)象和對(duì)象層次結(jié)構(gòu),同時(shí)保留人類可讀性。

 

GLib是GTK+和GNOME工程的基礎(chǔ)底層核心程序庫,是一個(gè)綜合用途的實(shí)用的輕量級(jí)的C程序庫,它提供C語言的常用的數(shù)據(jù)結(jié)構(gòu)的定義、相關(guān)的處理函 數(shù),有趣而實(shí)用的宏,可移植的封裝和一些運(yùn)行時(shí)機(jī)能,如事件循環(huán)、線程、動(dòng)態(tài)調(diào)用、對(duì)象系統(tǒng)等的API。它能夠在類UNIX的操作系統(tǒng)平臺(tái)(如 LINUX, HP-UNIX等),WINDOWS,OS2和BeOS等操作系統(tǒng)臺(tái)上運(yùn)行。

GObject的對(duì)象系統(tǒng)提供了一種靈活的、可擴(kuò)展的、并容易映射(到其它語言)的面向?qū)ο蟮腃語言框架。它的實(shí)質(zhì)可以概括為:

· 一個(gè)通用類型系統(tǒng),用來注冊(cè)任意的、輕便的、單根繼承的、并能推導(dǎo)出任意深度的結(jié)構(gòu)類型的界面,它照顧組合對(duì)象的定制、初始化和內(nèi)存管理,類結(jié)構(gòu),保持對(duì)象的父子關(guān)系,處理這些類型的動(dòng)態(tài)實(shí)現(xiàn)。也就是說,這些類型的實(shí)現(xiàn)是在運(yùn)行時(shí)重置和卸載的;

· 一個(gè)基本類型的實(shí)現(xiàn)集,如整型,枚舉型和結(jié)構(gòu)型等;

· 一個(gè)基本對(duì)象體系之上的基本對(duì)象類型的實(shí)現(xiàn)的例子--GObject基本類型;

· 一個(gè)信號(hào)系統(tǒng),允許用戶非常靈活的自定義虛的或重載對(duì)象的方法,并且能充當(dāng)非常有效力的通知機(jī)制;

· 一個(gè)可擴(kuò)展的參數(shù)/變量體系,支持所有的能被用作處理對(duì)象屬性或其它參數(shù)化類型的基本的類型。

 

打開JSON-GLIB主頁:

下面這段代碼使用了json-glib庫讀取上述人員信息:

#include

#include

#include

 

int

main (int argc, char *argv[])

{

JsonParser *parser;

JsonNode *root;

GError *error;

 

if (argc < 2)

{

g_print ("Usage: test \n");

return EXIT_FAILURE;

}

 

g_type_init ();

 

parser = json_parser_new ();

 

error = NULL;

json_parser_load_from_file (parser, argv[1], &error);

if (error)

{

g_print ("Unable to parse `%s': %s"\n, argv[1], error->message);

g_error_free (error);

g_object_unref (parser);

return EXIT_FAILURE;

}

 

root = json_parser_get_root (parser);

 

/* manipulate the object tree and then exit */

 

g_object_unref (parser);

 

return EXIT_SUCCESS;

}


想要了解更多詳情歡迎來電咨詢18678812288
登陸網(wǎng)址:m.h6244.cn。
聯(lián)系人:王經(jīng)理。

仲巴县| 屏山县| 额济纳旗| 尖扎县| 盱眙县| 赞皇县| 沙田区| 留坝县| 罗山县| 陇西县| 平江县| 融水| 巴林左旗| 宁明县| 福海县| 邵武市| 芜湖县| 商都县| 司法| 镇原县| 神木县| 金乡县| 新巴尔虎左旗| 榆林市| 墨竹工卡县| 绥棱县| 湘潭市| 牡丹江市| 高州市| 新泰市| 阳原县| 邳州市| 会东县| 克什克腾旗| 鄂伦春自治旗| 兴安盟| 伽师县| 开江县| 缙云县| 永修县| 台东市|