毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 课程设计 >> 正文

Android中如何使用JSON来实现客户端和服务器的交互

更新时间:2011-4-9:  来源:毕业论文

Android中如何使用JSON来实现客户端和服务器的交互
首先来了解一下JSON:
JSON的定义:一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性。业内主流技术为其提供了完整的解决方案(有点类似于正则表达式,获得了当今大部分语言的支持),从而可以在不同平台间进行数据交换。JSON采用兼容性很高的文本格式,同时也具备类似于C语言体系的行为。
Json.orgJSON的结构:Name/Value Pairs,类似所熟知的Keyed list、 Hash table、Disctionary和Associative array。在Andro六,维-论'文:网http://www.lwfree.cn id平台中同时存在另外一个类 “Bundle“,某种程度上具有相似的行为。org.json.JSONObjectArray,一组有序的数据列表。
系统中有关JSON定义的基本单元:org.json.JSONArray在Android中包含四个与JSON相关的类和一个Exceptions:JSONObject、JSONArray、JSONStringer、JSONTokener、JSONException。
JSONObject:其包含一对儿(Key/Value)数值。它对外部(External:应用toString()方法输出的数值)调用的响应体现为一个标准的字符串
例如:{“JSON”: “Hello, World”},最外被大括号包裹,其中的Key和Value被冒号”:”分隔)。其对于内部(Internal)行为的操作格式略微,例如:初始化一个JSONObject实例,引用内部的put()方法添加数值:new JSONObject().put(“JSON”, “Hello, World!”),在Key和Value之间是以逗号”,”分隔。Value的类型包括:Boolean、JSONArray、JSONObject、Number、String或者默认值JSONObject.NULL object。有两个不同的取值方法:get(): 在确定数值存在的条件下使用,否则当无法检索到相关Key时,将会抛出一个Exception信息。opt(): 这个方法相对比较灵活,当无法获取所指定数值时,将会返回一个默认数值,并不会抛出异常。
JSONArray:它代表一组有序的数值。将其转换为String输出(toString)所表现的形式是用方括号包裹,数值以逗号”,”分隔(例如:[value1,value2,value3],大家可以亲自利用简短的代码更加直观的了解其格式)。这个类的内部同样具有查询行为,get()和opt()两种方法都可以通过index索引返回指定的数值,put()方法用来添加或者替换数值。同样这个类的value类型可以包括:Boolean、JSONArray、JSONObject、Number、String或者默认值JSONObject.NULL object。
JSONStringer:根据官方的解释,这个类可以帮助快速和便捷的创建JSONtext。其最大的优点在于可以减少由于格式的错误导致程序异常,引用这个类可以自动严格按照JSON语法规则(syntaxrules)创建JSONtext。每个JSONStringer实体只能对应创建一个JSONtext。
根据下边的实例来了解其它相关信息:
1.String  myString = new JSONStringer().object()
2. .key(“AR”).value(“www.Androidres.com!”)
3. .endObject()4..toString();
结果是一组标准格式的JSONtext:{”AR”:”www.Androidres.com!”}其中的.object()和.endObject()必须同时使用,是为了按照Object标准给数值添加边界。同样,针对数组也有一组标准的方法来生成边界.array()和.endArray()。
JSONTokener:这个是系统为JSONObject和JSONArray构造器解析JSONsource string的类,它可以从source string中提取数值信息。
JSONException:是JSON.org类抛出的异常信息。

因为JSON的结构良好,构造JSONObject和JSONArray都是非常的简单,而且使用起来又跟Map非常的相近,不过最好的还是可嵌套性与结构良好性的统一,使得在使用JSON编程的时,感觉很舒服。但是如果字符串太长的话,使用JSONArray(String str)来构造JSONArray对象还是比较耗时的,譬如使用BASE 64编码后的图像使用JSON进行传输会相对比较慢。
然后我们来看看如何使用JSON实现客户端和服务器端的交互:
第一步 服务器端六,维-论'文:网http://www.lwfree.cn 的搭建
如果远程服务器使用了json而不是xml的数据提供,在Android平台上已经内置的org.json包可以很方便的实现手机客户端的解析处理。所以在服务器端,我采用的是SSH框架,struts 2集合了JSON插件,服务器和客户端的信息交互采用的JSON来传输,由于在服务器端用了Struts 2,所以要装一个JSON插件。这样,很轻易的就把服务器端的信息用JSON的形式发送到了手机端。
以下是代码:
在服务器端搭建好SSH框架,具体细节就不在赘述了。
struts.xml配置如下:
 1.<packagename= "login" extends = "json-default" > 
 2.<actionname= "login" class = "com.jclick.test.LoginAction" method= "login" >
 3.<resulttype= "json" ><paramname= "includeProperties" >result</param></result> 
 4.</action> 
 5.</ package > 
 6.
 7.<packagename= "login" extends = "json-default" > 
 8.<actionname= "login" class = "com.jclick.test.LoginAction" method= "login" >
 9.<resulttype= "json" ><paramname= "includeProperties" >result</param></result> 
 10.</action> 
 11.</ package >
第二歩 手机端的代码实现
首先,手机端有一个缓存类,主要用于缓存一些手机端需要访问的数据,这样的好处是可以达达节省手机和服务器的交互,用单例实现的:
 1.packagecom.jclick.cache; 
 2.
 3.importcom.jclick.bean.User; 
 4.
 5.publicclassCache{ 
 6.
 7.privateUserUser; 
 8.
 9.privateCache(){ 
 10.
 11.} 
 12./**构造单例*/ 
 13.privatestaticclassCacheHolder{ 
 14.privatestaticfinalCacheINSTANCE=newCache(); 
 15.} 
 16.publicCachegetInstance(){ 
 17.returnCacheHolder.INSTANCE; 
 18.} 
 19.publicUsergetUser(){ 
 20.returnUser; 
 21.} 
 22.publicvoidsetUser(UserUser){ 
 23.this .User=User; 
 24.} 
 25.
 26.} 
 27.
 28.packagecom.jclick.cache; 
 29.
 30.importcom.jclick.bean.User; 
 31.
 32.publicclassCache{ 
 33.     
 34.    privateUserUser; 
 35.     
 36.    privateCache(){ 
 37.         
 38.    } 
六,维-论'文:网http://www.lwfree.cn  39.     /**构造单例*/ 
 40.    privatestaticclassCacheHolder{ 
 41.        privatestaticfinalCacheINSTANCE=newCache(); 
 42.    } 
 43.    publicCachegetInstance(){ 
 44.        returnCacheHolder.INSTANCE; 
 45.    } 
 46.    publicUsergetUser(){ 
 47.        returnUser; 
 48.    } 
 49.    publicvoidsetUser(UserUser){ 
 50.         this .User=User; 
 51.    } 
 52.
 53.}
第三步  书写手机端的协议1735

[1] [2] [3] 下一页

Android中如何使用JSON来实现客户端和服务器的交互下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©lwfree.cn 六维论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。