Android中的數(shù)據(jù)交換格式

人與人之間的溝通和交流,需要使用彼此能夠聽得懂的語言。同理,兩個程序之間進行相互通信,也需要彼此能夠聽得懂的“語言”,這種“語言”就是通信中的數(shù)據(jù)交換格式。有時為了防止“偷聽”,在計算機程序之間的相互通信,需要使用數(shù)據(jù)加密技術。

1、純文本格式

?????? 它是一種簡單的、無格式數(shù)據(jù)交換方式。它的優(yōu)點是數(shù)據(jù)量小,讀取速度快,缺點是沒有對數(shù)據(jù)項的描述,只是用空格或者逗號分隔而已。當數(shù)據(jù)量很小的時候,可以采用這種格式。如:客戶端將用戶名和密碼發(fā)送給服務器,在服務器經(jīng)過驗證,如果驗證成功返回1,如果驗證失敗返回0,此時涉及的都是少量數(shù)據(jù)就可以考慮使用純文本格式。

2、XML格式

?????? XML,可擴展標記語言(Extensible Markup Language),是一種自描述的數(shù)據(jù)交換格式,它是一種經(jīng)典、靈活的數(shù)據(jù)交換格式。只有嚴格按照規(guī)范編寫的XML文檔才是有效的文檔,稱為格式良好的XML文檔(well-formed)。

?????? XML文件的基本架構分為以下幾個部分:

?????? a)聲明:XML文件的聲明,定義xml文件的版本和使用的字符集。

?????? b)根標簽:XML文件的根標簽,也就是樹狀結構的根節(jié)點。

?????? c)子元素:子元素是相對于它的上一級元素而言的,所有元素都要有結束標簽,開始標簽和結束標簽必須是一致的。

d)屬性:如中的name="dog"就是animal的屬性,一個元素不能有多個相同名字的屬性。

在Android平臺能夠使用的API,都是JavaSE中最為原始的API,主要有:SAX和DOM兩種方式。SAX和DOM都是指XML文檔的解析方式,即程序如何分析XML文檔。

?????? SAX是一種基于事件驅動的解析模式,解析XML時程序從上到下讀取XML文檔,如果遇到開始標簽、結束標簽、屬性等,就會觸發(fā)相應的事件。但是這種解析XML文件的方式有一個弊端,就是只能讀取XML文檔,不能寫入XML文檔。SAX方式解析起來不是很普遍。

?????? DOM方式是將XML文檔作為樹狀結構,提供節(jié)點的相關屬性和方法獲取各元素的內容,或者是新增、刪除、修改節(jié)點的內容。解析器在加載XML文檔后,DOM將XML文件的元素視為樹狀結構的節(jié)點,需要使用Document、NodeList、Node、Attr、Element接口對象訪問元素和屬性的內容。

????? Document:樹狀結構表示整個XML文檔。

????? Node:節(jié)點對象,新增、修改、刪除節(jié)點的對象。

????? NodeList:節(jié)點列表對象,指定節(jié)點的子節(jié)點的整個樹狀結構。

????? Element:XML元素對象,也是節(jié)點對象。

????? Attr:XML元素屬性對象,也是節(jié)點對象。


3、JSON格式:

????? 它是一種輕量級的數(shù)據(jù)交換格式,描述相同的數(shù)據(jù)所需的字符個數(shù)少,那么傳輸?shù)乃俣染蜁岣?,所需流量會減少。?由于Web開發(fā)、移動云端開發(fā)等領域對流量和速度有很高的要求,使得JSON成為理想的數(shù)據(jù)交換語言。

????? 構建JSON文檔需要兩種結構:對象和數(shù)組。

????? 對象是一個無序的“名/值”對的集合,一個對象以“{”開始,以“}”結束,每個名稱后跟一個冒號“:”,“名/值”對之間使用逗號“,”分隔。

????? 數(shù)組是值的有序集合,一個數(shù)組以“[”開始,以“]”結束,值之間使用逗號“,”分隔。數(shù)組中值可以是字符串、數(shù)值、true、false、null、對象或者數(shù)組,而且這些結構可以嵌套。

???? JSON和XML在真正進行數(shù)據(jù)交換的時候,它們的存在形式就是一個很長的字符串,這個字符串在網(wǎng)絡中傳輸或者存儲在磁盤等介質中。在傳輸和存儲之前,需要把JSON對象轉換成字符串才能傳輸或者存儲,這個過程稱之為“編碼”過程。接收一方需要把接收到的字符串轉換為JSON對象,這個過程稱之為“解碼”過程。

在實際編碼過程中兩邊不一定都是使用java語言,不同的JSON類庫可以在http://www.json.org找到相應的計算機語言支持的json類庫下載。這個JSON類庫已經(jīng)包含在Android平臺中了,在做Android上的JSON編碼和解碼程序時,不需要再將JSON類庫包配置到Android工程類路徑下面,不需要額外導入JSON類庫了。但如果需要構建的程序是Java其他形式的工程(如Java Web工程),就必須將這個JSON的類庫包配置到該工程的類路徑下。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容