分享

FastJson--阿里巴巴公司开源的速度最快的Json和对象转换工具

 寂寞如故 2014-11-26
[java]view plaincopy
  1. classUser{  

  2. privateintid;  

  3. privateString name;  

  4. publicintgetId() {  

  5. returnid;  

  6. }  

  7. publicvoidsetId(intid) {  

  8. this.id = id;  

  9. }  

  10. publicString getName() {  

  11. returnname;  

  12. }  

  13. publicvoidsetName(String name) {  

  14. this.name = name;  

  15. }  

  16. }  

[java]view plaincopy
  1. importjava.util.ArrayList;  

  2. importjava.util.List;  


  3. classGroup{  

  4. privateintid;  

  5. privateString name;  

  6. privateList<User> list = newArrayList<User>();  

  7. publicintgetId() {  

  8. returnid;  

  9. }  

  10. publicvoidsetId(intid) {  

  11. this.id = id;  

  12. }  

  13. publicString getName() {  

  14. returnname;  

  15. }  

  16. publicvoidsetName(String name) {  

  17. this.name = name;  

  18. }  

  19. publicList<User> getList() {  

  20. returnlist;  

  21. }  

  22. publicvoidsetList(List<User> list) {  

  23. this.list = list;  

  24. }  

  25. }  

[java]view plaincopy
  1. classWeibo {  

  2. privateString id;  

  3. privateString city;  


  4. publicWeibo(String id, String city) {  

  5. this.id = id;  

  6. this.city = city;  

  7. }  


  8. publicWeibo() {  

  9. }  


  10. publicString getId() {  

  11. returnid;  

  12. }  


  13. publicvoidsetId(String id) {  

  14. this.id = id;  

  15. }  


  16. publicString getCity() {  

  17. returncity;  

  18. }  


  19. publicvoidsetCity(String city) {  

  20. this.city = city;  

  21. }  

  22. }  

[java]view plaincopy
  1. importjava.util.HashMap;  

  2. importjava.util.List;  

  3. importjava.util.Map;  


  4. importcom.alibaba.fastjson.JSON;  

  5. importcom.alibaba.fastjson.JSONArray;  

  6. importcom.alibaba.fastjson.JSONObject;  


  7. //下面是FastJson的简介:常用的方法!  

  8. //  Fastjson API入口类是com.alibaba.fastjson.JSON,常用的序列化操作都可以在JSON类上的静态方法直接完成。  

  9. //  public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray   

  10. //  public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject      

  11. //  public static final <T> T parseObject(String text, Class<T> clazz); // 把JSON文本parse为JavaBean   

  12. //  public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray   

  13. //  public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本parse成JavaBean集合   

  14. //  public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本   

  15. //  public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本   

  16. //  public static final Object toJSON(Object javaObject); 将JavaBean转换为JSONObject或者JSONArray(和上面方法的区别是返回值是不一样的)  


  17. /** 

  18. * 这是关于FastJson的一个使用Demo,在Java环境下验证的; 

  19. * 使用的时候可以参照这个例子进行回忆! 

  20. * 备注:下面写的Json格式的数据"前面的\,意思是告诉编译器忽略掉它后面的"。 

  21. * 后面定义有三个类:User、Group、Weibo 

  22. * @author liuzhao 

  23. */  

  24. publicclassJsonDemo {  


  25. publicstaticvoidmain(String[] args) {  


  26. json2JsonObjectM1();//将Json文本数据信息转换为JsonObject对象,然后利用键值对的方式获取信息  

  27. json2BeanM2();//将Json文本数据转换为JavaBean数据!  

  28. json2JSONArrayM3();//将json数据转化为JSONArray:   

  29. json2JavaBeanM4();//将JSON文本转换为JavaBean的集合;转换为单纯的1个Object:parseObject(String text, Class<T> clazz);   

  30. bean2JsonM5();//将JavaBean转换为Json格式的数据/Json文本 用户数据的传递:例如上传服务器  

  31. bean2JSONObjectM6();//将JavaBean转换为JSON对象  

  32. complexExampleM7();//一个相对复杂的例子:  

  33. complex2JsonM8();//一个复杂的Object到Json的Demo  

  34. complexMap2JsonM9();//将Map数据转换为JsonString的Demo;这个对RedBoy服务端不就直接破了嘛!  

  35. }  


  36. /** 

  37. * 将Json文本数据信息转换为JsonObject对象,然后利用键值对的方式获取信息 

  38. */  

  39. privatestaticvoidjson2JsonObjectM1() {  

  40. //一个JsonObject文本数据  

  41. String s = "{\"name\":\"liuzhao\"}";  

  42. //将JsonObject数据转换为Json  

  43. JSONObject object = JSON.parseObject(s);  

  44. //利用键值对的方式获取到值  

  45. System.out.println(object.get("name"));  

  46. /** 

  47. * 打印: 

  48. * liuzhao 

  49. */  

  50. }  


  51. /** 

  52. * 将Json文本数据转换为JavaBean数据! 

  53. * 需要注意的是:这时候的Json文本信息中的键的名称必须和JavaBean中的字段名称一样!键中没有的在这个JavaBean中就显示为null! 

  54. */  

  55. privatestaticvoidjson2BeanM2() {  

  56. String s = "{\"id\":\"0375\",\"city\":\"平顶山\"}";  

  57. //一个简单方便 的方法将Json文本信息转换为JsonObject对象的同时转换为JavaBean对象!  

  58. Weibo weibo = JSON.parseObject(s, Weibo.class);//Weibo类在下边定义  

  59. System.out.println(weibo.getId());  

  60. System.out.println(weibo.getCity());  

  61. //打印的结果     0375  

  62. //              平顶山  

  63. }  



  64. /** 

  65. * 将Map类型的数据转换为JsonString 

  66. */  

  67. privatestaticvoidcomplexMap2JsonM9() {  

  68. Group group = newGroup();  

  69. group.setId(1);  

  70. group.setName("group");  


  71. User user1 = newUser();  

  72. user1.setId(2);  

  73. user1.setName("user1");  


  74. User user2 = newUser();  

  75. user2.setId(3);  

  76. user2.setName("user2");  

  77. group.getList().add(user1);  

  78. group.getList().add(user2);  


  79. Map<Integer, Object> map = newHashMap<Integer,Object>();  

  80. map.put(1, "No.1");  

  81. map.put(2, "No.2");  

  82. map.put(3, group.getList());  


  83. String jsonString = JSON.toJSONString(map);  

  84. System.out.println(jsonString);  

  85. /** 

  86. *  输出:{1:"No.1",2:"No.2",3:[{"id":2,"name":"user1"},{"id":3,"name":"user2"}]} 

  87. */  

  88. }  


  89. /** 

  90. * 由一个复杂的Object到Json的Demo 

  91. */  

  92. privatestaticvoidcomplex2JsonM8() {  

  93. Group group = newGroup();  

  94. group.setId(1);  

  95. group.setName("group");  


  96. User user1 = newUser();  

  97. user1.setId(2);  

  98. user1.setName("user1");  


  99. User user2 = newUser();  

  100. user2.setId(3);  

  101. user2.setName("user2");  

  102. group.getList().add(user1);  

  103. group.getList().add(user2);  

  104. String jsonString = JSON.toJSONString(group);  

  105. System.out.println(jsonString);  

  106. /** 

  107. *  输出:{"id":1,"list":[{"id":2,"name":"user1"},{"id":3,"name":"user2"}],"name":"group"} 

  108. */  

  109. }  


  110. /** 

  111. * 一个相对复杂的例子: 

  112. * JSON文本数据: 

  113. *      首先是JSONObject,转换为JSONArray; 

  114. *      然后将JSONArray转换为JavaBean 

  115. */  

  116. privatestaticvoidcomplexExampleM7() {  

  117. String s = "{js:[{id:\"110000\",\"city\":\"北#001京市\"},{id:\"110000\",\"city\":\"北#002京市\"}"  

  118. + ",{id:\"110000\",\"city\":\"北#002京市\"},{id:\"110000\",\"city\":\"北#002京市\"},"  

  119. + "{id:\"110000\",\"city\":\"#006北#005京市\"},"  

  120. + "{id:\"110000\",\"city\":\"北#002京市\"},"  

  121. + "{id:\"110000\",\"city\":\"北#002京市\"},{id:\"120000\",\"city\":\"天#009津市\"}]}";  


  122. JSONObject object = JSON.parseObject(s);  

  123. Object jsonArray = object.get("js");  

  124. System.out.println(jsonArray);  

  125. List<Weibo> list = JSON.parseArray(jsonArray+"", Weibo.class);  

  126. for(Weibo weibo : list) {  

  127. System.out.println(weibo.getCity());  

  128. }  

  129. }  


  130. /** 

  131. * 将JavaBean转换为JSON对象 

  132. */  

  133. privatestaticvoidbean2JSONObjectM6() {  

  134. Weibo weibo = newWeibo("0373", "洛阳");  

  135. JSONObject json = (JSONObject) JSON.toJSON(weibo);  

  136. System.out.println(json.get("id"));  

  137. /** 

  138. * 打印: 

  139. * 0373 

  140. */  

  141. }  


  142. /** 

  143. * 将JSON文本转换为JavaBean的集合; 

  144. * 内部实现肯定是:首先转换为JSONArray,然后再转换为List集合 

  145. */  

  146. privatestaticvoidjson2JavaBeanM4() {  

  147. String s = "[{\"id\":\"0375\",\"city\":\"平顶山\"},{\"id\":\"0377\",\"city\":\"南阳\"}]";  

  148. List<Weibo> list = JSON.parseArray(s, Weibo.class);  

  149. for(Weibo weibo : list) {  

  150. System.out.println(weibo.getCity());  

  151. }  

  152. /** 

  153. * 打印: 

  154. * 平顶山 

  155. * 南阳 

  156. */  

  157. }  


  158. /** 

  159. * 将json数据转化为JSONArray: 

  160. * 注意:获取到JSONArray之后(我们这里只是获取到JSONArray而不是JavaBean的List集合) 

  161. * 获取JSONArray中的数据转换为String类型需要在外边加""; 

  162. */  

  163. privatestaticvoidjson2JSONArrayM3() {  

  164. String s = "[{\"id\":\"0375\",\"city\":\"平顶山\"},{\"id\":\"0377\",\"city\":\"南阳\"}]";  

  165. //将JSON文本转换为JSONArray  

  166. JSONArray array = JSON.parseArray(s);  

  167. //这行必须写:必须加上+"";不然会报出类型强转异常!  

  168. String str = array.get(1)+"";  

  169. System.out.println(array.get(0));  

  170. JSONObject object = JSON.parseObject(str);  

  171. System.out.println(object.get("id"));  

  172. /** 

  173. * {"city":"平顶山","id":"0375"} 

  174. 0377 

  175. */  

  176. }  



  177. /** 

  178. * 将JavaBean转换为Json格式的数据/Json文本 

  179. * 用户数据的传递:例如上传服务器 

  180. */  

  181. privatestaticvoidbean2JsonM5() {  

  182. Weibo weibo = newWeibo("123456", "上海");  

  183. String string = JSON.toJSONString(weibo);  

  184. System.out.println(string);  

  185. /** 

  186. * 打印: 

  187. * {"city":"上海","id":"123456"} 

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多