JSON 即 JavaScript Object Natation,它是一種輕量級的數(shù)據(jù)交換格式,非常適合于服務(wù)器與 JavaScript 的交互。是獨立于語言的文本格式,并且采用了類似于C語言家族的一些習(xí)慣。JSON用于描述數(shù)據(jù)結(jié)構(gòu),有以下形式存在。
· 對象 (object):一個對象以“{”開始,并以“}”退出。一個對象包含一系列非排序的名稱/值對,每個名稱/值對之間使用“,”分區(qū)。
· 名稱/值(collection):名稱和值之間使用“:”隔開,一般的形式是:
{name:value}
一個名稱是一個字符串; 一個值可以是一個字符串,一個數(shù)值,一個對象,一個布爾值,一個有串行表,或者一個null值。
· 值的有串行表(Array):一個或者多個值用“,”分區(qū)后,使用“[”,“]”括起來就形成了這樣的列表,形如:
[collection, collection]
· 字符串:以""括起來的一串字符。
· 數(shù)值:一系列0-9的數(shù)字組合,可以為負(fù)數(shù)或者小數(shù)。還可以用“e”或者“E”表示為指數(shù)形式。
· 布林值:表示為 true 或者 false。
麥好的AI樂園博客所有內(nèi)容是原創(chuàng),如果轉(zhuǎn)載請注明來源
http://blog.csdn.net/myhaspl/
WEB開發(fā)
JSON最開始被廣泛的應(yīng)用于WEB應(yīng)用的開發(fā),隨著Web2.0的方興未艾,JSON在WEB數(shù)據(jù)傳輸領(lǐng)域占有重要的地位。[來源請求]
NoSQL數(shù)據(jù)庫
相對于傳統(tǒng)的關(guān)系型數(shù)據(jù)庫,一些基于文檔存儲的NoSQL非關(guān)系型數(shù)據(jù)庫選擇JSON作為其數(shù)據(jù)存儲格式,比較出名的產(chǎn)品有:MongoDB、CouchDB、RavenDB等。
下面是一個描述人員信息的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是一個庫,實現(xiàn)了全JSON分析器使用GLib和的GObject。使用JSON - GLib的是有可能的解析和生成有效的JSON數(shù)據(jù)結(jié)構(gòu),利用一個DOM的API。的JSON GLib的還提供GObject的一體化,提供了序列化和反序列化能力GObject的實例,從JSON數(shù)據(jù)類型。JSON是JavaScript對象符 號,它可以用來表示對象和對象層次結(jié)構(gòu),同時保留人類可讀性托福答案
GLib是GTK+和GNOME工程的基礎(chǔ)底層核心程序庫,是一個綜合用途的實用的輕量級的C程序庫,它提供C語言的常用的數(shù)據(jù)結(jié)構(gòu)的定義、相關(guān)的處理函 數(shù),有趣而實用的宏,可移植的封裝和一些運行時機能,如事件循環(huán)、線程、動態(tài)調(diào)用、對象系統(tǒng)等的API。它能夠在類UNIX的操作系統(tǒng)平臺(如 LINUX, HP-UNIX等),WINDOWS,OS2和BeOS等操作系統(tǒng)臺上運行。
GObject的對象系統(tǒng)提供了一種靈活的、可擴展的、并容易映射(到其它語言)的面向?qū)ο蟮腃語言框架。它的實質(zhì)可以概括為:
· 一個通用類型系統(tǒng),用來注冊任意的、輕便的、單根繼承的、并能推導(dǎo)出任意深度的結(jié)構(gòu)類型的界面,它照顧組合對象的定制、初始化和內(nèi)存管理,類結(jié)構(gòu),保持對象的父子關(guān)系,處理這些類型的動態(tài)實現(xiàn)。也就是說,這些類型的實現(xiàn)是在運行時重置和卸載的雅思答案 www.tygj123.com
· 一個基本類型的實現(xiàn)集,如整型,枚舉型和結(jié)構(gòu)型等;
· 一個基本對象體系之上的基本對象類型的實現(xiàn)的例子--GObject基本類型;
· 一個信號系統(tǒng),允許用戶非常靈活的自定義虛的或重載對象的方法,并且能充當(dāng)非常有效力的通知機制;
· 一個可擴展的參數(shù)/變量體系,支持所有的能被用作處理對象屬性或其它參數(shù)化類型的基本的類型。
打開JSON-GLIB主頁:
https://wiki.gnome.org/action/show/Projects/JsonGlib?action=show&redirect=JsonGlib
下載0.99.2版。
下面這段代碼使用了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;
}