【
Android
开发】
: Android
客户端与服务端之间使用
JSON
交互数据。
分类:【Android 开发】2013-11-11 23:452239 人阅读评论(9)收藏举报
Androidjava webJSONhttp 协议服务端
在前面的两讲中,我们讲解了 JSON 数据格式的一些基本知识,
以及做一些小 Demo,这一讲我们在前面的基础上来做一个综合的可扩
展的 Demo,主要是针对 Android 客户端解析服务端传递过来的
JSON 数据。整个 Demo 所作的操作如下图所示
1. 服务端
服务端我们需要用到的解析 JSON 的库是用 org.json -->
Java --> JSON-lib 项目中的库 json-lib-2.4-jdk15.jar,这
个库还需要附带几个依赖包:commons-beanutils.jar,
commons-httpclient.jar, commons- lang.jar,
ezmorph.jar,morph-1.0.1.jar。具体的包我会放在源码的 lib
目录下,读者可以自己去下载。
查看这个项目的 api 文档:http://json-
lib.sourceforge.net/apidocs/jdk15/index.html,我们主
要使用的是 JSON JSONArray JSONObject JSONSerializer
这几个类,JSONObject 这个类可以发现它与 org.json 这个项目的
用法很类似。
1) 先做一个服务端的小实验,就是在服务端实现对 Java 对象转
换成 JSON 数据格式并且在控制台输出。
Person.java 普通的 Person 类
[java]view plaincopy
1. packagecom.json.domain;
2.
3. publicclassPerson{
4.
5. privateintid;
6. privateStringname;
7. privateStringaddress;
8.
9. publicPerson(intid,Stringname,Stringaddress){
10. super();
11. this.id=id;
12. this.name=name;
13. this.address=address;
14. }
15.
16. publicPerson(){
17. //TODOAuto-generatedconstructorstub
18. }
19.
20. publicintgetId(){
21. returnid;
22. }
23.
24. publicvoidsetId(intid){
25. this.id=id;
26. }
27.
28. publicStringgetName(){
29. returnname;
30. }
31.
32. publicvoidsetName(Stringname){
33. this.name=name;
34. }
35.
36. publicStringgetAddress(){
37. returnaddress;
38. }
39.
40. publicvoidsetAddress(Stringaddress){
41. this.address=address;
42. }
43.
44. }
JsonService.java 服务于 Person,给 Person 对象赋予各种属性
[java]view plaincopy
1. packagecom.json.service;
2.
3. importjava.util.ArrayList;
4. importjava.util.HashMap;
5. importjava.util.List;
6. importjava.util.Map;
7.
8. importcom.json.domain.Person;
9.
10. publicclassJsonService{
11. publicJsonService(){
12. //TODOAuto-generatedconstructorstub
13. }
14.
15. publicPersongetPerson(){
16. Personperson=newPerson(23,"AHuier","XIAMEN
");
17. returnperson;
18. }
19.
20. publicList<Person>getListPerson(){
21. List<Person>list=newArrayList<Person>();
22. Personperson1=newPerson(1001,"AHuier1","Be
ijing");
23. Personperson2=newPerson(1002,"AHuier2","sh
enzheng");
24. list.add(person1);
25. list.add(person2);
26. returnlist;
27. }
28.
29. publicList<String>getListString(){
30. List<String>list=newArrayList<String>();
31. list.add("Hello");
32. list.add("World");
33. list.add("AHuier");
34. returnlist;
35. }
36.
37. publicList<Map<String,Object>>getListMaps(){
38. List<Map<String,Object>>listMap=newArrayLis
t<Map<String,Object>>();
39. Map<String,Object>map1=newHashMap<String,O
bject>();
40. map1.put("color","red");
41. map1.put("id",01);
42. map1.put("name","Polu");
43. listMap.add(map1);
44. Map<String,Object>map2=newHashMap<String,O
bject>();
45. map2.put("id",07);
46. map2.put("color","green");
47. map2.put("name","Zark");
48. listMap.add(map2);
49. returnlistMap;
50. }
51.
52. }
JsonTools.java 工具类
[java]view plaincopy
1. packagecom.json.tools;
2.
3. importnet.sf.json.JSONObject;
4.
5. /**
6. *@authorxukunhui
7. *工具类,这里专门处理 Java 对象转 Json 字符串的功能
8. */
9. publicclassJsonTools{
10.
11. publicJsonTools(){
12. //TODOAuto-generatedconstructorstub
13. }
14.
15. /**
16. *@paramkey:JSON名值对中的的名字
17. *@paramvalue:JSON名值对中的值,值可以有多种类型
18. *@return
19. */
20. //接受对象转换为 JSON 数据格式并且作为字符串输出.
21. publicstaticStringcreateJsonString(Stringkey,Ob
jectvalue){
22. JSONObjectjsonObject=newJSONObject();
23. jsonObject.put(key,value);
24. returnjsonObject.toString();//就可以转换成 Json 数
据格式
25. }
26.
27. }
JsonTest.java 测试类
[java]view plaincopy
1. packagecom.json.test;
2.
3. importcom.json.domain.Person;
4. importcom.json.service.JsonService;
5. importcom.json.tools.JsonTools;
6.