http://www.oschina.net/code/snippet_228315_35122

  1. class User{
  2. private int id;
  3. private String name;
  4. public int getId() {
  5. return id;
  6. }
  7. public void setId(int id) {
  8. this.id = id;
  9. }
  10. public String getName() {
  11. return name;
  12. }
  13. public void setName(String name) {
  14. this.name = name;
  15. }
  16. }
  1. import java.util.ArrayList;
  2. import java.util.List;
  3.  
  4. class Group{
  5. private int id;
  6. private String name;
  7. private List<User> list = new ArrayList<User>();
  8. public int getId() {
  9. return id;
  10. }
  11. public void setId(int id) {
  12. this.id = id;
  13. }
  14. public String getName() {
  15. return name;
  16. }
  17. public void setName(String name) {
  18. this.name = name;
  19. }
  20. public List<User> getList() {
  21. return list;
  22. }
  23. public void setList(List<User> list) {
  24. this.list = list;
  25. }
  26. }
  1. class Weibo {
  2. private String id;
  3. private String city;
  4.  
  5. public Weibo(String id, String city) {
  6. this.id = id;
  7. this.city = city;
  8. }
  9.  
  10. public Weibo() {
  11. }
  12.  
  13. public String getId() {
  14. return id;
  15. }
  16.  
  17. public void setId(String id) {
  18. this.id = id;
  19. }
  20.  
  21. public String getCity() {
  22. return city;
  23. }
  24.  
  25. public void setCity(String city) {
  26. this.city = city;
  27. }
  28. }
  1. import java.util.HashMap;
  2. import java.util.List;
  3. import java.util.Map;
  4.  
  5. import com.alibaba.fastjson.JSON;
  6. import com.alibaba.fastjson.JSONArray;
  7. import com.alibaba.fastjson.JSONObject;
  8.  
  9. //下面是FastJson的简介:常用的方法!
  10. // Fastjson API入口类是com.alibaba.fastjson.JSON,常用的序列化操作都可以在JSON类上的静态方法直接完成。
  11. // public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray
  12. // public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject
  13. // public static final <T> T parseObject(String text, Class<T> clazz); // 把JSON文本parse为JavaBean
  14. // public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray
  15. // public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本parse成JavaBean集合
  16. // public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本
  17. // public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本
  18. // public static final Object toJSON(Object javaObject); 将JavaBean转换为JSONObject或者JSONArray(和上面方法的区别是返回值是不一样的)
  19.  
  20. /**
  21. * 这是关于FastJson的一个使用Demo,在Java环境下验证的;
  22. * 使用的时候可以参照这个例子进行回忆!
  23. * 备注:下面写的Json格式的数据"前面的\,意思是告诉编译器忽略掉它后面的"。
  24. * 后面定义有三个类:User、Group、Weibo
  25. * @author liuzhao
  26. */
  27. public class JsonDemo {
  28.  
  29. public static void main(String[] args) {
  30.  
  31. json2JsonObjectM1();//将Json文本数据信息转换为JsonObject对象,然后利用键值对的方式获取信息
  32. json2BeanM2();//将Json文本数据转换为JavaBean数据!
  33. json2JSONArrayM3();//将json数据转化为JSONArray:
  34. json2JavaBeanM4();//将JSON文本转换为JavaBean的集合;转换为单纯的1个Object:parseObject(String text, Class<T> clazz);
  35. bean2JsonM5();//将JavaBean转换为Json格式的数据/Json文本 用户数据的传递:例如上传服务器
  36. bean2JSONObjectM6();//将JavaBean转换为JSON对象
  37. complexExampleM7();//一个相对复杂的例子:
  38. complex2JsonM8();//一个复杂的Object到Json的Demo
  39. complexMap2JsonM9();//将Map数据转换为JsonString的Demo;这个对RedBoy服务端不就直接破了嘛!
  40. }
  41.  
  42. /**
  43. * 将Json文本数据信息转换为JsonObject对象,然后利用键值对的方式获取信息
  44. */
  45. private static void json2JsonObjectM1() {
  46. //一个JsonObject文本数据
  47. String s = "{\"name\":\"liuzhao\"}";
  48. //将JsonObject数据转换为Json
  49. JSONObject object = JSON.parseObject(s);
  50. //利用键值对的方式获取到值
  51. System.out.println(object.get("name"));
  52. /**
  53. * 打印:
  54. * liuzhao
  55. */
  56. }
  57.  
  58. /**
  59. * 将Json文本数据转换为JavaBean数据!
  60. * 需要注意的是:这时候的Json文本信息中的键的名称必须和JavaBean中的字段名称一样!键中没有的在这个JavaBean中就显示为null!
  61. */
  62. private static void json2BeanM2() {
  63. String s = "{\"id\":\"0375\",\"city\":\"平顶山\"}";
  64. //一个简单方便 的方法将Json文本信息转换为JsonObject对象的同时转换为JavaBean对象!
  65. Weibo weibo = JSON.parseObject(s, Weibo.class);//Weibo类在下边定义
  66. System.out.println(weibo.getId());
  67. System.out.println(weibo.getCity());
  68. //打印的结果 0375
  69. // 平顶山
  70. }
  71.  
  72. /**
  73. * 将Map类型的数据转换为JsonString
  74. */
  75. private static void complexMap2JsonM9() {
  76. Group group = new Group();
  77. group.setId(1);
  78. group.setName("group");
  79.  
  80. User user1 = new User();
  81. user1.setId(2);
  82. user1.setName("user1");
  83.  
  84. User user2 = new User();
  85. user2.setId(3);
  86. user2.setName("user2");
  87. group.getList().add(user1);
  88. group.getList().add(user2);
  89.  
  90. Map<Integer, Object> map = new HashMap<Integer,Object>();
  91. map.put(1, "No.1");
  92. map.put(2, "No.2");
  93. map.put(3, group.getList());
  94.  
  95. String jsonString = JSON.toJSONString(map);
  96. System.out.println(jsonString);
  97. /**
  98. * 输出:{1:"No.1",2:"No.2",3:[{"id":2,"name":"user1"},{"id":3,"name":"user2"}]}
  99. */
  100. }
  101.  
  102. /**
  103. * 由一个复杂的Object到Json的Demo
  104. */
  105. private static void complex2JsonM8() {
  106. Group group = new Group();
  107. group.setId(1);
  108. group.setName("group");
  109.  
  110. User user1 = new User();
  111. user1.setId(2);
  112. user1.setName("user1");
  113.  
  114. User user2 = new User();
  115. user2.setId(3);
  116. user2.setName("user2");
  117. group.getList().add(user1);
  118. group.getList().add(user2);
  119. String jsonString = JSON.toJSONString(group);
  120. System.out.println(jsonString);
  121. /**
  122. * 输出:{"id":1,"list":[{"id":2,"name":"user1"},{"id":3,"name":"user2"}],"name":"group"}
  123. */
  124. }
  125.  
  126. /**
  127. * 一个相对复杂的例子:
  128. * JSON文本数据:
  129. * 首先是JSONObject,转换为JSONArray;
  130. * 然后将JSONArray转换为JavaBean
  131. */
  132. private static void complexExampleM7() {
  133. String s = "{js:[{id:\"110000\",\"city\":\"北#001京市\"},{id:\"110000\",\"city\":\"北#002京市\"}"
  134. + ",{id:\"110000\",\"city\":\"北#002京市\"},{id:\"110000\",\"city\":\"北#002京市\"},"
  135. + "{id:\"110000\",\"city\":\"#006北#005京市\"},"
  136. + "{id:\"110000\",\"city\":\"北#002京市\"},"
  137. + "{id:\"110000\",\"city\":\"北#002京市\"},{id:\"120000\",\"city\":\"天#009津市\"}]}";
  138.  
  139. JSONObject object = JSON.parseObject(s);
  140. Object jsonArray = object.get("js");
  141. System.out.println(jsonArray);
  142. List<Weibo> list = JSON.parseArray(jsonArray+"", Weibo.class);
  143. for (Weibo weibo : list) {
  144. System.out.println(weibo.getCity());
  145. }
  146. }
  147.  
  148. /**
  149. * 将JavaBean转换为JSON对象
  150. */
  151. private static void bean2JSONObjectM6() {
  152. Weibo weibo = new Weibo("0373", "洛阳");
  153. JSONObject json = (JSONObject) JSON.toJSON(weibo);
  154. System.out.println(json.get("id"));
  155. /**
  156. * 打印:
  157. * 0373
  158. */
  159. }
  160.  
  161. /**
  162. * 将JSON文本转换为JavaBean的集合;
  163. * 内部实现肯定是:首先转换为JSONArray,然后再转换为List集合
  164. */
  165. private static void json2JavaBeanM4() {
  166. String s = "[{\"id\":\"0375\",\"city\":\"平顶山\"},{\"id\":\"0377\",\"city\":\"南阳\"}]";
  167. List<Weibo> list = JSON.parseArray(s, Weibo.class);
  168. for (Weibo weibo : list) {
  169. System.out.println(weibo.getCity());
  170. }
  171. /**
  172. * 打印:
  173. * 平顶山
  174. * 南阳
  175. */
  176. }
  177.  
  178. /**
  179. * 将json数据转化为JSONArray:
  180. * 注意:获取到JSONArray之后(我们这里只是获取到JSONArray而不是JavaBean的List集合)
  181. * 获取JSONArray中的数据转换为String类型需要在外边加"";
  182. */
  183. private static void json2JSONArrayM3() {
  184. String s = "[{\"id\":\"0375\",\"city\":\"平顶山\"},{\"id\":\"0377\",\"city\":\"南阳\"}]";
  185. //将JSON文本转换为JSONArray
  186. JSONArray array = JSON.parseArray(s);
  187. //这行必须写:必须加上+"";不然会报出类型强转异常!
  188. String str = array.get(1)+"";
  189. System.out.println(array.get(0));
  190. JSONObject object = JSON.parseObject(str);
  191. System.out.println(object.get("id"));
  192. /**
  193. * {"city":"平顶山","id":"0375"}
  194. 0377
  195. */
  196. }
  197.  
  198. /**
  199. * 将JavaBean转换为Json格式的数据/Json文本
  200. * 用户数据的传递:例如上传服务器
  201. */
  202. private static void bean2JsonM5() {
  203. Weibo weibo = new Weibo("123456", "上海");
  204. String string = JSON.toJSONString(weibo);
  205. System.out.println(string);
  206. /**
  207. * 打印:
  208. * {"city":"上海","id":"123456"}
  209. */
  210. }
  211.  
  212. }

alibaba的FastJson(高性能JSON开发包) json转换的更多相关文章

  1. [转] FastJson---高性能JSON开发包

    原文地址: FastJson---高性能JSON开发包 Fastjson介绍 Fastjson是一个Java语言编写的JSON处理器,由阿里巴巴公司开发.1.遵循http://json.org标准,为 ...

  2. alibaba的FastJson(高性能JSON开发包),fastjson 使用demo

    这是关于FastJson的一个使用Demo,在Java环境下验证的 class User{ private int id; private String name; public int getId( ...

  3. alibaba的FastJson(高性能JSON开发包)

    这是关于FastJson的一个使用Demo,在Java环境下验证的 class User{ private int id; private String name; public int getId( ...

  4. (转)FastJson---高性能JSON开发包

    场景:javaBean对象转化为json对象! 1 Fastjson介绍 Fastjson是一个Java语言编写的JSON处理器,由阿里巴巴公司开发.1.遵循http://json.org标准,为其官 ...

  5. FastJson---高性能JSON开发包

    SVN:http://code.alibabatech.com/svn/fastjson/trunk/WIKI:http://code.alibabatech.com/wiki/display/Fas ...

  6. RapidJSON 1.0 正式版发布,C++的JSON开发包

    分享 <关于我> 分享  [中文纪录片]互联网时代                 http://pan.baidu.com/s/1qWkJfcS 分享 <HTML开发MacOSAp ...

  7. Fastjson是一个Java语言编写的高性能功能完善的JSON库。

    简介 Fastjson是一个Java语言编写的高性能功能完善的JSON库. 高性能 fastjson采用独创的算法,将parse的速度提升到极致,超过所有json库,包括曾经号称最快的jackson. ...

  8. Json和Map互转,四个包(org.json/net.sf.json/com.google.gson/com.alibaba.fastjson)

    目前使用的(org.json/net.sf.json/com.google.gson/com.alibaba.fastjson)这四种json-map互转,其他的以后在补充.............. ...

  9. com.alibaba.fastjson.JSONObject之对象与JSON转换方法

    com.alibaba.fastjson.JSONObject时经常会用到它的转换方法,包括Java对象转成JSON串.JSON对象,JSON串转成java对象.JSON对象,JSON对象转换Java ...

随机推荐

  1. ajax请求的完整步骤

    AJAX = 异步JavaScript和XML,可以使网页实现异步更新,达到局部更新的目的. 一.AJAX请求步骤如下: 1.创建XMLHttpRequest对象 var xhr; if(window ...

  2. ProxySQL

    ProxySQL   http://www.proxysql.com/

  3. WTL中最简单的实现窗口拖动的方法(转)

    目前,很多基于对话框的应用程序中对话框都是不带框架的,也就是说对话框没有标题栏.众所周知,窗口的移动都是通过鼠标拖动窗口的标题栏来实现的,那么现在应用程序中的对话框没有了标题栏,用户如何移动对话框呢? ...

  4. VC在线程中操作界面

    http://blog.csdn.net/tingsking18/article/details/4399199 多线程是我们在编程中经常遇到的问题,线程执行完后往往要把执行的结果传给主线程,但是MF ...

  5. android:ProgressBar控件

    ProgressBar 用于在界面上显示一个进度条,表示我们的程序正在加载一些数据.它的用 法也非常简单,修改 activity_main.xml 中的代码,如下所示: <LinearLayou ...

  6. How can I add a site title refiner

    一篇非常好的博客,收藏一下 https://sharepoint.stackexchange.com/questions/109409/how-can-i-add-a-site-title-refin ...

  7. The system is running in low-graphics mode UB16

    1.Ctrl+ALT+F1 进入控制台 2.输入用户名和密码进入系统 3.输入以下命令: cd /etc/X11 sudo cp xorg.conf.failsafe xorg.conf sudo r ...

  8. 图像的视差匹配(Stereo Matching)

    这里要求用我们自己计算得到的视差图和给的视差图作比較来比較我们得到的视差图的好坏程度,我视差图返回的值是计算得到的视差乘以3之后的图,所以在计算时我不是两个值相差大于1,而是大于3.由于两个图像都乘3 ...

  9. Javascript框架的自定义事件(转)

    很多 javascript 框架都提供了自定义事件(custom events),例如 jquery.yui 以及 dojo 都支持“document ready”事件.而部分自定义事件是源自回调(c ...

  10. 【PMP】项目目标的SMART原则

    详细解读 Specific 具体的 用具体的语言清楚的说明要达成的标准. Measureable 可测量的 目标应该是明确的,而不是模糊的.应该有一组明确的数据,作为衡量是否达成目标的依据. Achi ...