?!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
JSON ?JavaScript Object NatationQ它是一U轻量的数据交换格式,非常适合于服务器?JavaScript 的交互。是独立于语a的文本格式,q且采用了类gC语言家族的一些习惯。JSON用于描述数据l构Q有以下形式存在?/p>
· 对象 QobjectQ:一个对象以“{”开始,q以“}”退出。一个对象包含一pd非排序的名称Q值对Q每个名Uͼ值对之间使用?”分区?/p>
· 名称Q|collectionQ:名称和g间用“:”隔开Q一般的形式是:
{name:value}
一个名U是一个字W串Q?一个值可以是一个字W串Q一个数|一个对象,一个布|一个有串行表,或者一个null倹{?/p>
· 值的有串行表QArrayQ:一个或者多个值用?”分区后Q用“[”,“]”括hŞ成了q样的列表,形如Q?/p>
[collection, collection]
· 字符Ԍ?quot;"括v来的一串字W?/p>
· 数|一pd0-9的数字组合,可以数或者小数。还可以用“e”或者“E”表CZؓ指数形式?/p>
· 布林|表示?true 或?false?/p>
WEB开?/p>
JSON最开始被q泛的应用于WEB应用的开发,随着Web2.0的方兴未艾,JSON在WEB数据传输领域占有重要的地位。[来源h]
NoSQL数据?/p>
相对于传l的关系型数据库Q一些基于文档存储的NoSQL非关pd数据库选择JSON作ؓ其数据存储格式,比较出名的品有QMongoDB、CouchDB、RavenDB{?/p>
下面是一个描qCh员信息的json数据?/p>
{
"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是一个库Q实C全JSON分析器用GLib和的GObject。用JSON - GLib的是有可能的解析和生成有效的JSON数据l构Q利用一个DOM的API。的JSON GLib的还提供GObject的一体化Q提供了序列化和反序列化能力GObject的实例,从JSON数据cd。JSON是JavaScript对象W?P它可以用来表C对象和对象层次l构Q同时保留hcdL?/p>
GLib是GTK+和GNOME工程的基底层核心E序库,是一个综合用途的实用的轻量的CE序库,它提供C语言的常用的数据l构的定义、相关的处理?敎ͼ有趣而实用的宏,可移植的装和一些运行时Q如事g循环、线E、动态调用、对象系l等的API。它能够在类UNIX的操作系l^収ͼ?LINUXQ?HP-UNIX{)QWINDOWSQOS2和BeOS{操作系l台上运行?/p>
GObject的对象系l提供了一U灵zȝ、可扩展的、ƈҎ映射Q到其它语言Q的面向对象的C语言框架。它的实质可以概括ؓQ?/p>
· 一个通用cdpȝQ用来注册Q意的、轻便的、单根承的、ƈ能推导出L深度的结构类型的界面Q它照顾l合对象的定制、初始化和内存管理,cȝ构,保持对象的父子关p,处理q些cd的动态实现。也是_q些cd的实现是在运行时重置和卸载的Q?/p>
· 一个基本类型的实现集,如整型,枚D型和l构型等Q?/p>
· 一个基本对象体pM上的基本对象cd的实现的例子--GObject基本cdQ?/p>
· 一个信Ll,允许用户非常灉|的自定义虚的或重载对象的ҎQƈ且能充当非常有效力的通知机制Q?/p>
· 一个可扩展的参?变量体系Q支持所有的能被用作处理对象属性或其它参数化类型的基本的类型?/p>
打开JSON-GLIB主页Q?/p>
下面q段代码使用了json-glib库读取上qCh员信?
#include
#include
#include
int
main (int argc, char *argv[])
{
JsonParser *parser;
JsonNode *root;
GError *error;
if (argc < 2)
{
g_print ("Usage: test
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;
}