今天自行研究了下json ,感觉非常好用,经过测试比google的GSON快多了

同时Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml转换成Java对象。功能非常的强悍!

大家也知道,json 在如今互联网时代应用的非常广,因为大家如此的关注,所以对json的解析性能要求也是非常高的。

一、 准备工作

1、 下载依赖库jar包

Jackson的jar all下载地址:http://jackson.codehaus.org/1.7.6/jackson-all-1.7.6.jar

然后在工程中导入这个jar包即可开始工作

官方示例:http://wiki.fasterxml.com/JacksonInFiveMinutes

因为下面的程序是用junit测试用例运行的,所以还得添加junit的jar包。版本是junit-4.2.8

如果你需要转换xml,那么还需要stax2-api.jar

2、 测试类基本代码如下

[java] view plain copy
  1. /*
  2. *@projectjava
  3. *@package
  4. *@fileJackson.java
  5. *@version1.0
  6. *@author廖益平
  7. *@time2011-11-8上午02:59:37
  8. */
  9. publicclassJackson{
  10. /*
  11. *
  12. *ClassDescriptongoeshere.
  13. *
  14. *@classJackson
  15. *@version1.0
  16. *@author廖益平
  17. *@time2011-11-8上午02:59:37
  18. */
  19. publicstaticJsonGeneratorjsonGenerator=null;
  20. privatestaticObjectMappermapper=newObjectMapper();
  21. publicstaticvoidmain(String[]args){
  22. Studentstudent=newStudent();
  23. student.setIsstudent(true);
  24. student.setUid(1000);
  25. student.setUname("xiaoliao");
  26. student.setUpwd("123");
  27. student.setNumber(12);
  28. Map<String,Student>stuMap=newHashMap<String,Student>();
  29. stuMap.put("1",student);
  30. stuMap.put("2",student);
  31. List<Object>stuList=newArrayList<Object>();
  32. List<Student>stuList1=newArrayList<Student>();
  33. stuList1.add(student);
  34. student=newStudent();
  35. student.setIsstudent(false);
  36. student.setUid(200);
  37. student.setUname("xiaomi");
  38. stuList1.add(student);
  39. stuList.add(student);
  40. stuList.add("xiaoxin");
  41. stuList.add("xiaoer");
  42. stuList.add(stuMap);
  43. //readJson2List();
  44. try{
  45. //readJson2Array();
  46. //writeArray2Json(array);
  47. //writeJson2List();
  48. //writeEntity2Json(student);
  49. writeJson2Entity();
  50. //writeMap2Json(stuMap);
  51. //writeList2Json(stuList1);
  52. }catch(IOExceptione){
  53. e.printStackTrace();
  54. }
  55. }
  56. /**
  57. *
  58. *<code>writeEntity2Json</code>
  59. *@description:TODO(实体类转换成json)
  60. *@paramobject
  61. *@throwsIOException
  62. *@since2011-11-8廖益平
  63. */
  64. publicstaticvoidwriteEntity2Json(Objectobject)throwsIOException{
  65. mapper.writeValue(newFile("D:\\developSoft\\aaadowload\\testjson1\\lib\\aa.txt"),object);
  66. mapper.writeValue(System.out,object);
  67. }
  68. /**
  69. *
  70. *<code>writeArray2Json</code>
  71. *@description:TODO(数组转换成json数组)
  72. *@paramobject
  73. *@throwsIOException
  74. *@since2011-11-8廖益平
  75. */
  76. publicstaticvoidwriteArray2Json(Objectobject)throwsIOException{
  77. //writeValue具有和writeObject相同的功能
  78. mapper.writeValue(newFile("D:\\developSoft\\aaadowload\\testjson1\\lib\\aa.txt"),object);
  79. mapper.writeValue(System.out,object);
  80. }
  81. /**
  82. *
  83. *<code>writeMap2Json</code>
  84. *@description:TODO(map对象转换成json对象)
  85. *@paramobject
  86. *@throwsIOException
  87. *@since2011-11-8廖益平
  88. */
  89. publicstaticvoidwriteMap2Json(Objectobject)throwsIOException{
  90. System.out.println("使用ObjectMapper-----------");
  91. //writeValue具有和writeObject相同的功能
  92. System.out.println("==>"+mapper.writeValueAsString(object));
  93. mapper.writeValue(newFile("D:\\developSoft\\aaadowload\\testjson1\\lib\\aamap.txt"),object);
  94. mapper.writeValue(System.out,object);
  95. }
  96. /**
  97. *
  98. *<code>writeList2Json</code>
  99. *@description:TODO(list转换成json)
  100. *@paramobject
  101. *@throwsIOException
  102. *@since2011-11-8廖益平
  103. */
  104. publicstaticvoidwriteList2Json(Objectobject)throwsIOException{
  105. System.out.println("==>"+mapper.writeValueAsString(object));
  106. mapper.writeValue(newFile("D:\\developSoft\\aaadowload\\testjson1\\lib\\aamap.txt"),object);
  107. mapper.writeValue(System.out,object);
  108. }
  109. /**
  110. *
  111. *<code>writeJson2Entity</code>
  112. *@description:TODO(json转换成实体)
  113. *@throwsIOException
  114. *@since2011-11-8廖益平
  115. */
  116. publicstaticvoidwriteJson2Entity()throwsIOException{
  117. System.out.println("json串转换成entity-------------");
  118. //Filefile=newFile("D:\\developSoft\\aaadowload\\testjson1\\lib\\aa.txt");
  119. //FileInputStreaminputStream=newFileInputStream(file);
  120. //Studentstudent=mapper.readValue(inputStream,Student.class);
  121. //System.out.println(student.toString());
  122. //漂亮输出
  123. //mapper.defaultPrettyPrintingWriter().writeValueAsString(value);
  124. Stringjson="{\"uid\":1000,\"uname\":\"xiaoliao\",\"upwd\":\"123\",\"number\":12.0,\"isstudent\":true}";
  125. Studentstudent1=mapper.readValue(json,Student.class);
  126. System.out.println("json2:"+student1.toString());
  127. }
  128. /**
  129. *
  130. *<code>writeJson2List</code>
  131. *@description:TODO(json专程list对象)
  132. *@throwsIOException
  133. *@since2011-11-8廖益平
  134. */
  135. publicstaticvoidwriteJson2List()throwsIOException{
  136. System.out.println("json串转换成entity-------------");
  137. Filefile=newFile("D:\\developSoft\\aaadowload\\testjson1\\lib\\aa.txt");
  138. FileInputStreaminputStream=newFileInputStream(file);
  139. Studentstudent=mapper.readValue(inputStream,Student.class);
  140. System.out.println(student.toString());
  141. Stringjson="[{\"uid\":1000,\"uname\":\"xiaoliao\",\"upwd\":\"123\",\"number\":12.0,\"isstudent\":true},{\"uid\":200,\"uname\":\"xiaomi\",\"upwd\":null,\"number\":0.0,\"isstudent\":false}]";
  142. List<LinkedHashMap<String,Object>>s=mapper.readValue(json,List.class);
  143. for(inti=0;i<s.size();i++){
  144. LinkedHashMap<String,Object>link=s.get(i);
  145. Set<String>key=link.keySet();
  146. for(Iteratoriterator=key.iterator();iterator.hasNext();){
  147. Stringstring=(String)iterator.next();
  148. System.out.println(string+"==>"+link.get(string));
  149. }
  150. System.out.println("json:"+i+""+s.get(i).toString());
  151. }
  152. }
  153. /**
  154. *JSON转换为List对象
  155. */
  156. publicstaticvoidreadJson2List(){
  157. Stringjson="[{\"uid\":1,\"uname\":\"www\",\"number\":234,\"upwd\":\"456\"},"
  158. +"{\"uid\":5,\"uname\":\"tom\",\"number\":3.44,\"upwd\":\"123\"}]";
  159. try{
  160. List<LinkedHashMap<String,Object>>list=mapper.readValue(
  161. json,List.class);
  162. System.out.println(list.size());
  163. for(inti=0;i<list.size();i++){
  164. Map<String,Object>map=list.get(i);
  165. Set<String>set=map.keySet();
  166. for(Iterator<String>it=set.iterator();it.hasNext();){
  167. Stringkey=it.next();
  168. System.out.println(key+":"+map.get(key));
  169. }
  170. }
  171. }catch(JsonParseExceptione){
  172. e.printStackTrace();
  173. }catch(JsonMappingExceptione){
  174. e.printStackTrace();
  175. }catch(IOExceptione){
  176. e.printStackTrace();
  177. }
  178. }
  179. /**
  180. *JSON转换为List对象
  181. */
  182. publicstaticvoidreadJson2Array(){
  183. Stringjson="[{\"uid\":1,\"uname\":\"www\",\"number\":234,\"upwd\":\"456\"},"
  184. +"{\"uid\":5,\"uname\":\"tom\",\"number\":3.44,\"upwd\":\"123\"}]";
  185. try{
  186. Student[]students=mapper.readValue(json,Student[].class);
  187. for(Studentstudent:students){
  188. System.out.println(">"+student.toString());
  189. }
  190. }catch(JsonParseExceptione){
  191. e.printStackTrace();
  192. }catch(JsonMappingExceptione){
  193. e.printStackTrace();
  194. }catch(IOExceptione){
  195. e.printStackTrace();
  196. }
  197. }
  198. }

打印结果 :

串转换成entity-------------
json2:uid=1000,name=xiao liao,upwd=123,number=12.0,isStudent=true

writeMap2Json -----------
{"2":{"uid":1000,"uname":"xiao liao","upwd":"123","number":12.0,"isstudent":true},"1":{"uid":1000,"uname":"xiao liao","upwd":"123","number":12.0,"isstudent":true}}

readJson2Array------------------
>uid=1,name=www,upwd=456,number=234.0,isStudent=false
>uid=5,name=tom,upwd=123,number=3.44,isStudent=false
writeMap2Json -----------
{"2":{"uid":1000,"uname":"xiao liao","upwd":"123","number":12.0,"isstudent":true},"1":{"uid":1000,"uname":"xiao liao","upwd":"123","number":12.0,"isstudent":true}}

大家逐个自己试试吧 ,上面也是我的测试代码

[java] view plain copy
  1. 实体类:
  2. /*
  3. *@projectjava
  4. *@package
  5. *@fileStudent.java
  6. *@version1.0
  7. *@author廖益平
  8. *@time2011-11-8上午03:01:08
  9. */
  10. publicclassStudent{
  11. /*
  12. *
  13. *ClassDescriptongoeshere.
  14. *
  15. *@classStudent
  16. *@version1.0
  17. *@author廖益平
  18. *@time2011-11-8上午03:01:08
  19. */
  20. privateintuid;
  21. privateStringuname;
  22. privateStringupwd;
  23. privatedoublenumber;
  24. privatebooleanisstudent;
  25. publicintgetUid(){
  26. returnuid;
  27. }
  28. publicvoidsetUid(intuid){
  29. this.uid=uid;
  30. }
  31. publicStringgetUname(){
  32. returnuname;
  33. }
  34. publicvoidsetUname(Stringuname){
  35. this.uname=uname;
  36. }
  37. publicStringgetUpwd(){
  38. returnupwd;
  39. }
  40. publicvoidsetUpwd(Stringupwd){
  41. this.upwd=upwd;
  42. }
  43. publicdoublegetNumber(){
  44. returnnumber;
  45. }
  46. publicvoidsetNumber(doublenumber){
  47. this.number=number;
  48. }
  49. publicbooleanisIsstudent(){
  50. returnisstudent;
  51. }
  52. publicvoidsetIsstudent(booleanisstudent){
  53. this.isstudent=isstudent;
  54. }
  55. @Override
  56. publicStringtoString(){
  57. return"uid="+uid+",name="+uname+",upwd="+upwd+",number="+number+",isStudent="+isstudent;
  58. }
  59. }

更多相关文章

  1. Android之monkey Test,Monkey测试中的黑名单和白名单,Monkey测试
  2. 介始一下Android 单元测试框架类----ActivityInstrumentationTes
  3. android studio查找应用控件id实现自动化测试
  4. Hierarchy Viewer测试工具
  5. Android真机测试,连接到本地服务器的方法
  6. 实例16--心理测试
  7. Android 如何获取当前Activity实例对象?
  8. Android应用程序窗口(Activity)的窗口对象(Window)的创建过程分析

随机推荐

  1. shape基本用法及全部属性定义
  2. 深入理解android之IPC机制与Binder框架
  3. Android线程池使用
  4. 在Ubuntu上为Android增加硬件抽象层(HAL)模
  5. Android(安卓)M及以上版本系统 悬浮窗权
  6. android 中管理短信
  7. Android(安卓)之 Handler总结
  8. Android开发之数据存储之二:SQLite数据库
  9. Android(安卓)调试模式工具的Stetho
  10. 【Android】windows下使用android studio