摘要:本文通過對XML實現的題庫系統的研究,分析得出XML構造題目中存在的數據冗余問題,結合題目構造的特點,提出使用JSON處理題目數據的方法,通過與XML題目的比較,得出JSON在處理面向數據應用時的簡單性和易于在客戶端處理等優點,并通過實例介紹JSON構造題目、Ajax抽題、JSON題目解析等問題。
關鍵詞:JSON 題庫 系統
1 概述
在Ajax+XML實現的題庫訓練系統中,題目則封裝成XML數據,為客戶端無刷新抽題提供實時數據。題目的XML模板定義如下:
response標記為根節點,title標記表示題目,items標記表示問題選項,input標記表示每個候選答案,div標記表示相關項的文本等。
每次抽題都會得到一個類似以上XML模板的題目數據,包括response、items、input、div等標記,這些標記括起來的部分才是真正有效數據,因此就產生了標記和格式上的冗余問題,冗余問題與描述題目的標記數量成正比,會增加用戶請求題目時的網絡開銷;而且增加了客戶端解析題目時的難度。
2 JSON技術
JSON(JavaScript Object Notation) 是一種輕量級的數據交換格式。易于人閱讀和編寫。同時也易于機器解析和生成。JSON建構于兩種結構:
① “名稱/值”對的無序集合。一個對象以“{”(左括號)開始,“}”(右括號)結束。每個“名稱”后跟一個“:”(冒號);“‘名稱/值’ 對”之間使用“,”(逗號)分隔,如圖1所示。
值(value)可以是雙引號括起來的字符串(string)、數值(number)、true、1、 1、對象(object)或者數組(array)。這些結構可以嵌套。需要注意的是:字符串(string)是由雙引號包圍的任意數量Unicode字符的集合,使用反斜線轉義。②JSON數組的有序集合。一個數組以“[”(左中括號)開始,“]”(右中括號)結束。值之間使用“,”(逗號)分隔。
用JSON描述題目信息如下:
{title:題目,items:[{item:A,text:文本},{item:B,text:文本},{item:C,text:文本},{item:D,text:文本}],an:答案}
通過比較,可見使用JSON描述題目比XML描述題目要簡潔得多。
3 JSON與XML比較
3.1 可讀性 JSON和XML的可讀性可謂不相上下,一邊是簡易的語法,一邊是規范的標簽形式,它們各具優勢,很難分出勝負。
3.2 可擴展性 XML天生有很好的擴展性,JSON當然也有,沒有什么是XML能擴展,而JSON卻不能擴展的。不過JSON在JavaScript主場作戰,可以存儲JavaScript復合對象,有著xml不可比擬的優勢。
3.3 編碼難度 在編碼上,雖然XML和JSON都有各自的編碼工具,但是JSON的編碼要比XML簡單,即使不借助工具,也可以寫出JSON代碼,但要寫出好的XML代碼就有點困難。對比來看,JSON更為清晰且冗余更少些,且語法的描述非常簡潔。XML比較適合于標記文檔,而JSON卻更適于進行數據交換處理。
3.4 是否易于在客戶端處理數據 在客戶端,要處理XMLHttpRequest請求返回的json格式響應數據是一件輕而易舉的事情,只需要使用JavaScript的eval()函數就可以實現把json格式的數據轉換成JavaScript對象,然后通過對象的屬性去訪問值。而XML在這一方面就不是那么的友善了,令無數的程序員頭痛不已,因為處理XML響應數據,得通過DOM樹,這是非常繁瑣且容易出錯的工作。這一點,JSON更易于在客戶端處理數據。
4 JSON應用實例
基于JSON可讀性高、良好的擴展性的特點,使其構造的題庫系統具有良好的用戶接口;更重要的是基于JSON更適合數據交換、易于客戶端處理數據的特點,使JSON構造題庫比XML構造題庫能更好減少冗余,從而在AJAX請求題目時,減少網絡傳輸的題目數據,提高效率,同時加快了客戶端加載題目時的速度。
4.1 服務端生成JSON題目 服務端主要是從數據庫中查詢題目并生成JSON文件,假設服務端使用C#實現JSON文件生成,交叉查詢讀出題目信息存放到DataReader對象中,遍歷DataReader生成JSON文件的關鍵代碼如下:
5 結束語
本文結合JSON的優點介紹實現題庫系統的思路,它是JSON技術開發中的一個簡易應用。可見JSON只提供整體解析方案,而這種方法在解析輕量級數據時能起到良好的效果,特別移動設備數據交換場合,JSON更體現了它的高性能和廣闊的應用前景。
參考文獻:
[1]韋永軍,覃秋密.基于AJAX智能題庫訓練系統的設計與實現.電腦知識與技術,2011年23期.
[2]覃秋密,韋永軍,蔣家斌.CSS Sprites提升網頁加載速度的應用研究.電腦知識與技術,2011年27期.
[3]谷方舟.JSON數據交換格式在異構系統集成中的應用研究.鐵路計算機應用.2012年第2期.