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

JSON 即 JavaScript Object Natation,它是一种轻量级的数据交换格式,非常适合于服务器与 JavaScript 的交互。是独立于语言的文本格式,并且采用了类似于C语言家族的一些习惯。JSON用于描述数据结构,有以下形式存在。

· 对象 (object):一个对象以“{”开始,并以“}”退出。一个对象包含一系列非排序的名称/值对,每个名称/值对之间使用“,”分区。

· 名称/值(collection):名称和值之间使用“:”隔开,一般的形式是:

{name:value}

一个名称是一个字符串; 一个值可以是一个字符串,一个数值,一个对象,一个布尔值,一个有串行表,或者一个null值。

· 值的有串行表(Array):一个或者多个值用“,”分区后,使用“[”,“]”括起来就形成了这样的列表,形如:

[collection, collection]

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

· 数值:一系列0-9的数字组合,可以为负数或者小数。还可以用“e”或者“E”表示为指数形式。

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

麦好的AI乐园博客所有内容是原创,如果转载请注明来源

http://blog.csdn.net/myhaspl/


WEB开发

JSON最开始被广泛的应用于WEB应用的开发,随着Web2.0的方兴未艾,JSON在WEB数据传输领域占有重要的地位。[来源请求]

NoSQL数据库

相对于传统的关系型数据库,一些基于文档存储的NoSQL非关系型数据库选择JSON作为其数据存储格式,比较出名的产品有:MongoDB、CouchDB、RavenDB等。

下面是一个描述人员信息的json数据”

{

     "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是一个库,实现了全JSON分析器使用GLib和的GObject。使用JSON - GLib的是有可能的解析和生成有效的JSON数据结构,利用一个DOM的API。的JSON GLib的还提供GObject的一体化,提供了序列化和反序列化能力GObject的实例,从JSON数据类型。JSON是JavaScript对象符 号,它可以用来表示对象和对象层次结构,同时保留人类可读性。

 

GLib是GTK+和GNOME工程的基础底层核心程序库,是一个综合用途的实用的轻量级的C程序库,它提供C语言的常用的数据结构的定义、相关的处理函 数,有趣而实用的宏,可移植的封装和一些运行时机能,如事件循环、线程、动态调用、对象系统等的API。它能够在类UNIX的操作系统平台(如 LINUX, HP-UNIX等),WINDOWS,OS2和BeOS等操作系统台上运行。

GObject的对象系统提供了一种灵活的、可扩展的、并容易映射(到其它语言)的面向对象的C语言框架。它的实质可以概括为:

· 一个通用类型系统,用来注册任意的、轻便的、单根继承的、并能推导出任意深度的结构类型的界面,它照顾组合对象的定制、初始化和内存管理,类结构,保持对象的父子关系,处理这些类型的动态实现。也就是说,这些类型的实现是在运行时重置和卸载的;

· 一个基本类型的实现集,如整型,枚举型和结构型等;

· 一个基本对象体系之上的基本对象类型的实现的例子--GObject基本类型;

· 一个信号系统,允许用户非常灵活的自定义虚的或重载对象的方法,并且能充当非常有效力的通知机制;

· 一个可扩展的参数/变量体系,支持所有的能被用作处理对象属性或其它参数化类型的基本的类型。

 

打开JSON-GLIB主页:

https://wiki.gnome.org/action/show/Projects/JsonGlib?action=show&redirect=JsonGlib

下载0.99.2版。

下面这段代码使用了json-glib库读取上述人员信息:

#include <stdlib.h>

#include <glib-object.h>

#include <json-glib/json-glib.h>

 

int

main (int argc, char *argv[])

{

  JsonParser *parser;

  JsonNode *root;

  GError *error;

 

  if (argc < 2)

    {

      g_print ("Usage: test <filename.json>\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;

}

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。