<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 手機與無(wú)線(xiàn)通信 > 設計應用 > 基于J2ME/J2EE的JSON數據交換的探討

基于J2ME/J2EE的JSON數據交換的探討

作者: 時(shí)間:2010-08-11 來(lái)源:網(wǎng)絡(luò ) 收藏

1 引言

隨著(zhù)無(wú)線(xiàn)技術(shù)的發(fā)展和無(wú)線(xiàn)通信設備的普及,基于手機、PDA等小型消費類(lèi)和嵌人式設備的無(wú)線(xiàn)移動(dòng)應用越來(lái)越廣泛。在可編程手機中,基于Java的手機最為通行,事實(shí)上,Java已為多數手機制造商所接受,成為手機應用與服務(wù)的標準。構建網(wǎng)絡(luò )感知軟件時(shí),選擇正確的數據交換格式是一項重要的設計決策,尤其在設計移動(dòng)和嵌入式應用程序時(shí),此時(shí),輕量和有效等特性是需要考慮的重要特征。此類(lèi)特征非常重要,因為它們可轉化為較低的計算要求和功耗使用、能發(fā)揮更好的性能以及較低的運營(yíng)成本。這里研究JSON數據交換格式相比XML和傳統數據交換格式所具有的優(yōu)勢,并提出在客戶(hù)端(J2ME)與服務(wù)器端(J2EE)之間采用JSON數據交換格式的一般實(shí)現框架。

2 J2ME/J2EE簡(jiǎn)介

J2ME(Java 2 Platform. MICRO Edition)是Java 2的一部分。將Java語(yǔ)言與平臺無(wú)關(guān)的特性移植到小型電子設備上,允許移動(dòng)無(wú)線(xiàn)設備之間共享應用程序。J2ME是針對有限硬件、有限功率、有限網(wǎng)絡(luò )連接設備進(jìn)行應用開(kāi)發(fā)的技術(shù),適合在無(wú)限通信設備上開(kāi)發(fā)交互性較強的網(wǎng)絡(luò )應用。在此基礎上編寫(xiě)的MIDP應用程序具有良好的兼容性和可移植性,可在PDA等手持設備上很好的運行。

J2EE是Java 2平臺的企業(yè)版,是一種利用Java 2平臺簡(jiǎn)化企業(yè)解決方案的體系結構。J2EE使用多層分布應用模型,其典型的4層結構為:①運行在客戶(hù)端機器上的客戶(hù)層組件,如Web瀏覽器、Java Applet等;②運行在J2EE服務(wù)器上的Web層組件,如Servlet和JSP;③運行在J2EE服務(wù)器上的業(yè)務(wù)邏輯層組件(EJB);④運行在EJS(Enterprise Information System)服務(wù)器上的企業(yè)信息系統層軟件。

3 JSON簡(jiǎn)介

JSON(JavaScript. Object Noation)是一種輕量級的數據交換格式,易于閱讀和編寫(xiě),也易于機器解析和生成。JSON采用完全獨立于語(yǔ)言的文本格式,但也使用類(lèi)似于C語(yǔ)言家族的習慣。這些特性使JSON成為理想的數據交換語(yǔ)言。

JSON格式的數據有對象和數組兩種。對象是一個(gè)無(wú)序的“名稱(chēng)/值”對集合。一個(gè)對象以“{”開(kāi)始,“}”結束。每個(gè)“名稱(chēng)”后跟一個(gè)“:”;“名稱(chēng)/值”對之間使用“,”分隔。數組值(value)的有序結合。一個(gè)數組以“{”開(kāi)始,“}”結束。值之間使用“,”分隔。

4數據交換格式分析

XML是一種用于描述信息存儲格式的語(yǔ)言,其優(yōu)點(diǎn)是健壯性和描述性強,且是新一代開(kāi)放、可互操作的Web Services選用的通信數據格式。在移動(dòng)應用程序中,開(kāi)發(fā)者通常自己創(chuàng )建數據交換格式或可擴展標記語(yǔ)言XML。前者的優(yōu)勢是可針對特定情況進(jìn)行調整,從而最大限度地提高性能,并最大限度地利用計算資源。當在HTTP上使用后者時(shí),其優(yōu)勢在于它是事實(shí)上的數據交換標準。另外,在XML中使用的基于文本的表示形式使其易于調試。這兩種方法各有其缺陷,前者本質(zhì)上是專(zhuān)用的、非標準的,并可能是不可互操作的,而后者數據表示過(guò)于正規和繁瑣,對于移動(dòng)和嵌入式應用程序尤其如此。

JSON是一種輕量級的數據交換格式,是基于文本的,具有良好的可讀性且易于調試。JSON支持所有基本數據類(lèi)型的表示法,并提供將這些數據類(lèi)型相互解析為Java類(lèi)型的方法。對于輕量級應用,JSON數據交換格式能夠較好的節省手機的計算資源,減少網(wǎng)絡(luò )傳輸時(shí)間,加快網(wǎng)絡(luò )傳輸速度。

5 數據交換框架實(shí)現

5.1 框架總體設計

框架結構包括2部分:J2ME客戶(hù)端和J2EE服務(wù)器端??蛻?hù)端采用J2ME的MIDP技術(shù),服務(wù)器端使用J2EE的servlet技術(shù)??蛻?hù)端使用HTTP協(xié)議發(fā)送已序列化的JSON消息到服務(wù)器端,服務(wù)器端通過(guò)反序列化JSON消息,根據客戶(hù)端請求進(jìn)行相應的操作后,把請求的結果序列化成JSON消息返回給客戶(hù)端,客戶(hù)端獲取到返回的JSON消息后,反序列化成具體需要的數據。圖1為總體設計框架。

5.2 服務(wù)器端

服務(wù)器端使用serverlet接收客戶(hù)端發(fā)送的基于HTTP協(xié)議的JSON消息,并調用JSONObject類(lèi)對JSON進(jìn)行反序列化操作,得到所需的詳細信息。根據JSON格式的數據類(lèi)型,需要分3種情況對JSON格式的數據進(jìn)行反序列化:①簡(jiǎn)單的對象形式。實(shí)現方法:創(chuàng )建一個(gè)JSONObiect實(shí)例,然后調用getString()函數,具體形式如下:JSONObject jsonObj=newJSONObject(message);String title=jsonObj.getString(“title”);其中message為接收到的JSON消息,title代表想要獲取的名稱(chēng)。②對象里面嵌套對象的形式。實(shí)現方法:在原對象基礎上調用其getJSONObject()方法。具體形式如下:JSONObjectbody_obj=jsonObj.getJSONObject();③數組形式。實(shí)現方法:在原對象的基礎上調用其getJSONArray(),得到一個(gè)數據類(lèi)型為JSONOebject的數組。反序列化得到請求的詳細信息后,J2EE端根據請求進(jìn)行其他操作,如從網(wǎng)絡(luò )上獲取XML數據、從數據庫獲取數據等。得到數據后,服務(wù)器端把數據序列化成JSON格式消息,發(fā)送到客戶(hù)端。

5.3 客戶(hù)端

客戶(hù)端向服務(wù)器端發(fā)送已被序列化的JSON格式消息,然后等待服務(wù)器端返回的消息,接到服務(wù)器返回的消息后,反序列化JSON消息。處理過(guò)程調用ison.me的API。具體實(shí)現如下:①序列化成JSON格式。只需調用JSONObjeet的put方法添加相關(guān)項。JSONObject可以添加3種對象:簡(jiǎn)單的對象、JSONObject對象、JSONArray對象。具體操作如下:JSONObject header=new JSONObjeet ();headerput(“title”,“yahoonews”);JSONObject childObj=new JSONObject();header.put(“child”,childObj);JSONArray arrayObj=new JSONArray();headerput(“array”,arrayObj);②反序列化JSON格式消息。反序列化也包括3種情況:簡(jiǎn)單的JSONObject對象、嵌套的JSONObject對象、數組對象。具體實(shí)現如下:JSONObject bj=new JSONObject(str);String title=obj-getString(“title”);intcount=obj.getInt(“count”);JSONObject body=obj.getJSONObject(“body”);JSONArray arrayObj=obj.getJSONArray(“array”);

5.4 傳輸協(xié)議層

客戶(hù)端和服務(wù)器端之間的通信采用HTTP協(xié)議。HTTP協(xié)議是一種廣泛使用的協(xié)議,所有MIDP設備都支持HTTP協(xié)議。且在各種不同的上,HTTP協(xié)議實(shí)現相對較容易。HTTP協(xié)議請求方式有GET和POST兩種。由于GET請求發(fā)送大數據塊時(shí)對URL字符串長(cháng)度有限制。對象JSON字符串長(cháng)度可能很長(cháng),尤其當使用極其復雜的對象時(shí)。

同時(shí),在跨域網(wǎng)絡(luò )以純文本方式發(fā)送所有數據,安全性難以保證.因此建議采用POST方式發(fā)送機密或內容極長(cháng)的請求。

6 結束語(yǔ)

通過(guò)分析JSON、XML與自定義數據交換格式,提出以JSON作為輕量級數據交換格式,并給出其在客戶(hù)端(J2ME)與服務(wù)器端(J2EE)解決方法的一般框架,解決了自定義和使用XML數據交換格式所帶來(lái)的繁瑣、耗費資源的缺陷。

物聯(lián)網(wǎng)相關(guān)文章:物聯(lián)網(wǎng)是什么




評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>