banner

JSON簡介

資料庫簡介─

AiritiBooks華文電子

 


JSON簡介

作者:林憲民

 

JSON (JavaScript Object Notation)是一種輕量級的資料交換格式,易於被閱讀及編寫,也易於機器解析及生成,它是基於JavaScript Programming Language, Standard ECMA-262 3rd Edition - December 1999的一個子集。

JSON採用完全獨立於語言的文本格式,但也使用了類似C語言家族(包括C、C++、C#、Java、JavaScript、Perl、Python)的一些習慣。這些特性使JSON成為理想的資料交換語言,若在網路上發送大量資料,效能應該可以較為提升 (Speeding Up AJAX with JSON)。JSON主要的優點有:相容性高、格式易於瞭解、支援許多資料格式及許多程式都有支援函式庫讀取或修改JSON資料。

一、JSON建構於兩種結構:

()成對的「名稱(name) /(value)」的集合,在不同的語言中被實現成物件(object)、記錄(record)、結構(struct)、字典(dictionary)、雜湊表(hash table)、索引清單(keyed list)、關聯性陣列(associative array)

()一個排序的清單,在不同的語言中被實現成陣列(array)、向量(vector)、清單(list)、序列(sequence)

這些都是常見的資料結構,事實上大部份現代程式語言都以某種形式支持它們,這使得在同樣基於這些結構的程式語言之間有可能利用一種資料格式進行資料交換。JSON具有以下這些形式:

1.JSON物件是一對對「名稱 / 值」的無序集合,以「 { (左大括號)」作為開始符號,以「 } (右大括號)」作為結束符號,名稱與值之間用「 : (冒號)」分隔。

2.JSON陣列是有序的「值」集合,以「 [ (左中括號)」作為開始符號,以「 ] (右中括號)」作為結束符號,陣列中的值用「 , (逗號)」分隔。

3.值可以是字串(用雙引號包起來)、數字、true、false、null、物件(object)和陣列(array),這些結構可以再嵌套 (nested)

4.字串是由雙引號包起來的任意數量的萬國碼(Unicode)字元的集合,使用反斜線作為跳脫字元(escapes)。一個字元就是一個單字元的字串。字串跟CJava的字串很類似。

5.數值也跟CJava的數值很相似,除了八進制和十六進制格式不能使用。

6.空白可以加入到任何符號之間。

7.相關範例請見JSON Example,並有可對照的XML格式供參考。

 

二、安全性問題:

()JavaScript的eval()

由於JSON在語法上是JavaScript的子集合,所以一般都會使用eval()作為讀取資料的方式,如果是針對可靠的資料來源,在不支持原生JSON解析的瀏覽器上面這是最快速的方法。然而由於eval方法同樣可以執行任意的JavaScript代碼,因此當資料來源不可靠時則可能產生安全性問題,請考慮如下例子:

var json = { message: (function () { window.location='http://zh.wikipedia.org/wiki/JSON/'; })()};

其中一種防止不安全代碼出現的解決辦法是透過瀏覽器原生支持的JSON.parse(str)方法讀取JSON資料,目前已經得到大部分主流瀏覽器的支持(IE8+、Firefox 3.5+、Chrome4+/Safari4+、Opera10+),在不支持原生JSON對象的瀏覽器上面可以使用parseJSON方法進行讀取,parseJSON採用解析器驗證讀入的代碼是否真的是JSON代碼,這樣就提供了較好的安全性。但是,由於這是用模擬的方式讀取,速度上會比eval()慢。

()跨站存取問題

另外一個安全上的問題則是跨站請求偽造(Cross-site request forgery,簡稱CSRF或XSRF)。這個問題在Javascript中的狀況是,由於Javascript採用了「沙箱(sandbox)」的機制,這種機制限制Javascript引擎僅能引入同一個站點的代碼,因而某種程度上提高了安全性。

目前,在Web開發上主要的資料交換格式有XMLJSON…等,而JSON相對於XML有資料格式比較簡單、佔用頻寬較小、易於解析、支援多種語言等優點,但也有通用性較差的缺點。實際上,對於大多數的Web應用程式而言,不見得都需要使用到較為複雜的XML來傳輸資料,很多AJAX甚至直接傳回HTML片段來構建動態網頁,不過如此做雖然降低了系統複雜性,但同時也較缺乏彈性,此時可試著改用簡單且彈性的JSON來進行資料交換,或許是個不錯的方式;另外在行動裝置上也非常適合使用JSON格式來處理資料,所以官方推出新版本的SDK(iOS 5+、Android 3.0+)時都已原生支援JSON解析,本來使用第三方JSON解析器(例如:SBJson、google-gson)的,現在若採用新版SDK時就能更方便使用,也因此使用JSON的情形愈來愈普遍。

 

  參考資料:

    1.Introducing JSON

    2.JSON Example

    3.維基百科:JSON


                                                    <TOP>

 

 

AiritiBooks華文電子書

 作者:蔡恆慈  

收錄主題:涵蓋語言文學、醫學護理、人文社會、工程數理、財經商管、藝術設計、教育心理、證照考試、休閒讀物等,質與量俱高,適合大專院校用書。

平台特色

  一、閱讀全文/線上閱讀:讀者由本校電子資源整合查詢 系統登入

      後進入AiritiBooks華文電子書,不需要登入帳號密碼,即可享

      受即時閱讀全文的服務。

  二、離線閱讀:欲使用離線閱讀的讀者,只要在校內IP範圍內進入

      AiritiBooks華文電子書申請加入個人會員,則可使用此功能。

操作步驟

  一、由本校圖書資訊館-電子資源整合查詢系統登入 (登入的帳號、

      密碼與本校電子郵件相同)。                  

  二、點選上方【電子書】→再點選左方的【電子書平台】。

   三、接著由AiritiBooks華文電子書的連結進入,目前共收錄257筆的

       資料。

   四、隨意點選任一筆的題名,即可連結至AiritiBooks華文電子書的頁

       面。

   五、點選首頁左上按鈕「本館可閱讀書籍」即可查看本館所有可借

       閱書籍。於各書籍右方可見到「閱讀全文」或「線上閱讀」,

       只需點選之後即可開啟閱讀。(線上閱讀可支援PC、Android

       統或iPad平板;閱讀全文只可支援PCAndroid系統平版)。

   六、離線閱讀:第一次使用時,請先於校內IP範圍內點選首頁左上

       方「個人會員登入」加入個人會員。

   七、請在登入個人會員的狀態下,點選任一書籍右方的「離線閱

       讀」已加入借閱清單。

   八、點選頁面上「Apple iOS APP離線閱讀」之圖示,即可至軟體下

       專區,下載適合的iRead eBook離線閱讀軟體,並安裝在電腦

       /平板電腦上。

 

   九、開啟已安裝的閱讀軟體,並登入您在華文電子書的個人帳號,

       即可下載已借閱的書籍,每本書借期為3天,借期日到期時書

       籍會自動歸還。

 

 

 

  <TOP>

   

 

Copyright 2012 © 圖書資訊館 Library and Information Center
81148 高雄市楠梓區高雄大學路700號
700, Kaohsiung University Rd., Nanzih District, 811. Kaohsiung, Taiwan, R.O.C
本館流通服務台電話:07-5919306