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. SQL Server 2008 数据库镜像部署实例之三 配置见证服务器

    SQL Server 2008 数据库镜像部署实例之三 配置见证服务器 前面已经完成了镜像数据库的配置,并进行那个了故障转移测试.接下来将部署见证服务器,实现自动故障转移. 一.关于见证服务器 1.若 ...

  2. 51nod 1471 小S的兴趣 sqrt

    小S喜欢有趣的事.但是,每个人的兴趣都是独特的.小S热衷于自问自答.有一天,小S想出了一个问题. 有一个包含n个正整数的数组a和针对这个数组的几个问题.这些问题有两种类型: 1.      在数组下标 ...

  3. Windows下PHP版本选取

    1. 下载地址 http://windows.php.net/download/ 2. PHP大版本 PHP4:由于太古老.对OO支持不力已基本被淘汰. PHP5:分为三个分支——PHP5.2之前的版 ...

  4. VG vs SS WE vs IM [20160815]

    上单:慎,纳尔,艾克,艾瑞莉娅,普朗克 中单:弗拉基米尔,玛尔扎哈,卡尔玛,丽桑卓,索尔,崔斯特,辛德拉 打野:雷克赛,奈德丽,古拉加斯,伊莉丝,赫卡里姆,玛尔扎哈 下路:艾希,克格莫,烬,希维尔,布 ...

  5. javaSwing文本域文件

    public class JTextAreaTest extends JFrame{    public JTextAreaTest()    {            setSize(200, 40 ...

  6. 使用JDBC处理MySQL大数据

    一.基本概念 大数据也称之为LOB(Large Objects),LOB又分为:clob和blob,clob用于存储大文本,blob用于存储二进制数据,例如图像.声音.二进制文等. 在实际开发中,有时 ...

  7. 百度Ueditor

    最近用到了百度Ueditor,也来写一写百度Ueditor的使用教程: 一.从官网下载百度Ueditor,http://ueditor.baidu.com/website/download.html, ...

  8. spring mvc 初始化错误

    java.lang.NoSuchMethodError: org.springframework.util.ClassUtils.isPresent(Ljava/lang/String;Ljava/l ...

  9. NRF51822之修改设备名(掉电不保存)

    主要代码 /**@brief Function for handling the Application's BLE Stack events. * * @param[in] p_ble_evt Bl ...

  10. Python自动化 【第三篇】:Python基础-集合、文件操作、字符编码与转码、函数

    1.        集合 1.1      特性 集合是一个无序的,不重复的数据组合,主要作用如下: 去重,把一个列表变成集合实现自动去重. set可以看成数学意义上的无序和无重复元素的集合,因此,两 ...