Fastjson是阿里巴巴公司开源的速度最快的Json和对象转换工具,一个Java语言编写的JSON处理器。

1、遵循http://json.org标准,为其官方网站收录的参考实现之一。
2、功能qiang打,支持JDK的各种类型,包括基本的JavaBean、Collection、Map、Date、Enum、泛型。
3、无依赖,不需要例外额外的jar,能够直接跑在JDK上。
4、开源,使用Apache License 2.0协议开源。http://code.alibabatech.com/wiki/display/FastJSON/Home

2、主要的使用入口

Fastjson API入口类是com.alibaba.fastjson.JSON,常用的序列化操作都可以在JSON类上的静态方法直接完成。
public static final Object parse(String text); // 把JSON文本parse为JSONObject或者JSONArray 
public static final JSONObject parseObject(String text); // 把JSON文本parse成JSONObject    
public static final <T> T parseObject(String text, Class<T> clazz); // 把JSON文本parse为JavaBean 
public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray 
public static final <T> List<T> parseArray(String text, Class<T> clazz); //把JSON文本parse成JavaBean集合 
public static final String toJSONString(Object object); // 将JavaBean序列化为JSON文本 
public static final String toJSONString(Object object, boolean prettyFormat); // 将JavaBean序列化为带格式的JSON文本 
public static final Object toJSON(Object javaObject); //将JavaBean转换为JSONObject或者JSONArray。

3、有关类库的一些说明

SerializeWriter:相当于StringBuffer
JSONArray:相当于List<Object>
JSONObject:相当于Map<String, Object>

JSON反序列化没有真正数组,本质类型都是List<Object>

4、fastjson还有很多很高级的特性,比如支持注解、支持全类型序列化,这些都是很好的特性,功能强大,不再讲解。

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

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

阿里巴巴Json工具-Fastjson讲解的更多相关文章

  1. 高性能JSON工具-FastJson处理超大JSON文本

    使用阿里开源类库FastJson,当需要处理超大JSON文本时,需要Stream API,在fastjson-1.1.32版本中开始提供Stream API.文档参考GitHub:https://gi ...

  2. 阿里巴巴json包 --------fastjson

    fastjson对null的处理----String str2 = JSONObject.toJSONString(jsonMap, SerializerFeature.WriteMapNullVal ...

  3. Android进阶笔记17:3种JSON解析工具(org.json、fastjson、gson)

    一. 目前解析json有三种工具:org.json(Java常用的解析),fastjson(阿里巴巴工程师开发的),Gson(Google官网出的),其中解析速度最快的是Gson. 3种json工具下 ...

  4. Android进阶笔记14:3种JSON解析工具(org.json、fastjson、gson)

    一. 目前解析json有三种工具:org.json(Java常用的解析),fastjson(阿里巴巴工程师开发的),Gson(Google官网出的),其中解析速度最快的是Gson. 3种json工具下 ...

  5. [Java学习] JSON工具学习记录--FastJSON

    最近做项目,总是与json打交道,在用了即可json工具后,个人认为fastJson最好用,很方便,API也清晰可见,所以记录下使用方法,给需要的人提供帮助.(部分摘抄自网络) 一.API入口 Fas ...

  6. 利用阿里巴巴封装的FastJSON来解析json并转换成map

    利用阿里巴巴封装的FastJSON来解析json并转换成map   package com.zkn.newlearn.json; import com.alibaba.fastjson.JSON; i ...

  7. 强大的json工具:fastJson

    fastJson   FastJSON是一个很好的java开源json工具类库,相比其他同类的json类库,它的速度的确是fast,最快!但是文档做得不好,在应用前不得不亲测一些功能.   实际上其他 ...

  8. JSON工具类库: alibaba/fastjson 使用记录

    JSON工具类库: alibaba/fastjson 使用记录 一.了解JSON JSON标准规范中文文档: http://www.json.org/json-zh.html 最佳实践:http:// ...

  9. 不同Json工具对空串和NULL的序列号处理:net.sf.json 和 fastjson

    目录 1.测试代码 2.测试结果: 3.总结: 4.注:Maven中引入net.sf.json的方式 net.sf.json 和 fastjson 对于空串和NULL的处理: 1.测试代码 packa ...

随机推荐

  1. IOS跳转设置页面及其他各种跳转页面设置

    转载来源 CocoaChina 跳到更多设置界面 除了跳到WiFi设置界面,能不能跳到其他的设置界面呢?比如:定位服务.FaceTime.音乐等等.都是可以的,一起来看看如何实现的! 定位服务 定位服 ...

  2. git初始化

    git init:初始化 git status:查看当前目录下文件状态 git add -A(表示添加当前目录下所有文件)/文件名(表示只添加该一个文件) git commit -m '':提交到本地 ...

  3. Django model 中meta options之 abstract

    当abstract=True时,这个model就变成了abstrct base class,那这个基类有什么特性呢? 当某一model中设置了abstract=True时,就会使该model中的字段都 ...

  4. ACM好书推荐

    年末感想之(渣渣的我)         仔细想想,搞比赛的日子4年有余了,确实不服老不行了,直到现在平均每天的题量都在3题左右.其实真想说,“渣渣的我”.做的题确实不少了,但是水平还是上不了档次.  ...

  5. 模块化InnoSetup依赖项安装

    原文在这里:http://www.codeproject.com/Articles/20868/NET-Framework-Installer-for-InnoSetup 源文件地址:http://w ...

  6. vbs脚本总结

    1.  msgbox语法:msgbox "对话框","对话框标题" 例:const hw="Hello World!" msgbox(hw) ...

  7. java文件保存至服务器

    import java.io.ByteArrayOutputStream;import java.io.File;import java.io.FileOutputStream;import java ...

  8. C#通过安全证书生成签名和验签辅助类

    using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net ...

  9. zedboard如何从PL端控制DDR读写(七)

    前面已经详细介绍了从PL端如何用AXI总线去控制DDR的读写,并且从AXI_BRESP的返回值来看,我们也是成功写入了的.但是没有通过别的方式来验证写入的数据的话,总是感觉差了点什么. 今天试了一把从 ...

  10. NHibernate系列文章十七:NHibernate Session管理(附程序下载)

    摘要 NHibernate的Session的管理涉及到NHibernate的两个最重要的对象ISessionFactory和ISession.ISessionFactory的生成非常消耗资源,通常都在 ...