阿里巴巴FastJson是一个Json处理工具包,包括“序列化”和“反序列化”两部分,它具备如下特征:
速度最快,测试表明,fastjson具有极快的性能,超越任其他的Java Json parser。包括自称最快的JackJson;
功能强大,完全支持Java Bean、集合、Map、日期、Enum,支持范型,支持自省;无依赖,能够直接运行在Java SE 5.0以上版本;支持Android;开源 (Apache 2.0)

源码地址:https://github.com/alibaba/fastjson

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 parseObject(String text, Class clazz); // 把JSON文本parse为JavaBean
*public static final JSONArray parseArray(String text); // 把JSON文本parse成JSONArray
*public static final List parseArray(String text, Class 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。

maven:

  1. <!-- https://mvnrepository.com/artifact/net.sf.json-lib/json-lib -->
  2. <dependency>
  3. <groupId>net.sf.json-lib</groupId>
  4. <artifactId>json-lib</artifactId>
  5. <version>2.4</version>
  6. <classifier>jdk15</classifier>
  7. </dependency>
  8. <!-- https://mvnrepository.com/artifact/com.alibaba/fastjson -->
  9. <dependency>
  10. <groupId>com.alibaba</groupId>
  11. <artifactId>fastjson</artifactId>
  12. <version>1.2.31</version>
  13. </dependency>

一般只用第二个fastjson就可以

demo:

  1. import com.alibaba.fastjson.JSON;
  2. import com.alibaba.fastjson.TypeReference;
  3. import java.util.ArrayList;
  4. import java.util.List;
  5. import lombok.ToString;
  6.  
  7. public class fastjson {
  8.  
  9. public static void main(String[] args) {
  10. Group group = new Group();
  11. group.setId(0L);
  12. group.setName("admin");
  13.  
  14. User guestUser = new User();
  15. guestUser.setId(2L);
  16. guestUser.setName("guest");
  17.  
  18. User rootUser = new User();
  19. rootUser.setId(3L);
  20. rootUser.setName("root");
  21.  
  22. group.getUsers().add(guestUser);
  23. group.getUsers().add(rootUser);
  24.  
  25. String jsonString = JSON.toJSONString(group);
  26. System.out.println(jsonString);
  27. Group group2 = JSON.parseObject(jsonString, Group.class);
  28. System.out.println("===============List==============");
  29. String strList=JSON.toJSONString(group.getUsers());
  30. System.out.println(strList);
  31. List<User> list=JSON.parseArray(strList,User.class);
  32. System.out.println(JSON.toJSONString(list));
  33. List<User> list2=JSON.parseObject(strList,new TypeReference<List<User>>(){});
  34. System.out.println(JSON.toJSONString(list2));
  35. }
  36. }
  37.  
  38. @ToString
  39. class User {
  40.  
  41. private Long id;
  42. private String name;
  43.  
  44. public Long getId() {
  45. return id;
  46. }
  47.  
  48. public void setId(Long id) {
  49. this.id = id;
  50. }
  51.  
  52. public String getName() {
  53. return name;
  54. }
  55.  
  56. public void setName(String name) {
  57. this.name = name;
  58. }
  59. }
  60.  
  61. class Group {
  62.  
  63. private Long id;
  64. private String name;
  65. private List<User> users = new ArrayList<User>();
  66.  
  67. public Long getId() {
  68. return id;
  69. }
  70.  
  71. public void setId(Long id) {
  72. this.id = id;
  73. }
  74.  
  75. public String getName() {
  76. return name;
  77. }
  78.  
  79. public void setName(String name) {
  80. this.name = name;
  81. }
  82.  
  83. public List<User> getUsers() {
  84. return users;
  85. }
  86.  
  87. public void setUsers(List<User> users) {
  88. this.users = users;
  89. }
  90. }

output:

  1. {"id":,"name":"admin","users":[{"id":,"name":"guest"},{"id":,"name":"root"}]}
  2. Disconnected from the target VM, address: '127.0.0.1:1655', transport: 'socket'
  3. ===============List==============
  4. [{"id":,"name":"guest"},{"id":,"name":"root"}]
  5. [{"id":,"name":"guest"},{"id":,"name":"root"}]
  6. [{"id":,"name":"guest"},{"id":,"name":"root"}]

特别注意上面的反序列化数组,有两种不同的方式。

2.查看JSONObject的使用

这个JSONObject在很多包里面都存在这个类,这里说的是fastjson包里面的使用

  1. package com.qhong.fastjson;
  2.  
  3. //import com.alibaba.fastjson.JSONObject;
  4.  
  5. //import net.sf.json.JSONObject;
  6.  
  7. import com.alibaba.fastjson.JSONObject;
  8.  
  9. import java.util.HashMap;
  10. import java.util.Map;
  11.  
  12. public class OperatorJSON {
  13. public static void main(String[] args) {
  14. createJson();
  15. createJsonByMap();
  16. createJsonByJavaBean();
  17. }
  18.  
  19. private static void createJson() {
  20. JSONObject obj = new JSONObject();
  21. obj.put("name", "John");
  22. obj.put("sex", "male");
  23. obj.put("age", 22);
  24. obj.put("is_student", true);
  25. obj.put("hobbies", new String[] {"hiking", "swimming"});
  26. //调用toString()方法可直接将其内容打印出来
  27. System.out.println(obj.toString());
  28. }
  29.  
  30. private static void createJsonByMap() {
  31. Map<String, Object> data = new HashMap<String, Object>();
  32. data.put("name", "John");
  33. data.put("sex", "male");
  34. data.put("age", 22);
  35. data.put("is_student", true);
  36. data.put("hobbies", new String[] {"hiking", "swimming"});
  37.  
  38. JSONObject obj = new JSONObject(data);
  39. System.out.println(obj.toString());
  40. }
  41.  
  42. private static void createJsonByJavaBean() {
  43. PersonInfo info = new PersonInfo();
  44. info.setName("John");
  45. info.setSex("male");
  46. info.setAge(22);
  47. info.setStudent(true);
  48. info.setHobbies(new String[] {"hiking", "swimming"});
  49.  
  50. String text= JSONObject.toJSONString(info);
  51. System.out.println(text);
  52. // JSONObject obj = JSONObject.toJSON(info);
  53. // System.out.println(obj);
  54. }
  55.  
  56. }
  57.  
  58. class PersonInfo {
  59.  
  60. private String name;
  61. private String sex;
  62. private int age;
  63. private boolean isStudent;
  64. private String[] hobbies;
  65.  
  66. public void setName(String name) {
  67. this.name = name;
  68. }
  69. public void setSex(String sex) {
  70. this.sex = sex;
  71. }
  72. public void setAge(int age) {
  73. this.age = age;
  74. }
  75. public void setStudent(boolean isStudent) {
  76. this.isStudent = isStudent;
  77. }
  78. public void setHobbies(String[] hobbies) {
  79. this.hobbies = hobbies;
  80. }
  81. //getter不能少
  82. public String getName() {
  83. return name;
  84. }
  85. public String getSex() {
  86. return sex;
  87. }
  88. public int getAge() {
  89. return age;
  90. }
  91. public boolean isStudent() {
  92. return isStudent;
  93. }
  94. public String[] getHobbies() {
  95. return hobbies;
  96. }
  97. }

output:

  1. {"hobbies":["hiking","swimming"],"sex":"male","name":"John","is_student":true,"age":22}
  2. {"hobbies":["hiking","swimming"],"sex":"male","name":"John","is_student":true,"age":22}
  3. {"age":22,"hobbies":["hiking","swimming"],"name":"John","sex":"male","student":true}
  4.  
  5. Process finished with exit code 0

可以从注释的区域看出,这个是fastjson包里面的,如果切换到net.sf.json包里面,那么就会报错!

http://blog.csdn.net/glarystar/article/details/6654494

fastjson 简单使用 及其JSONObject使用的更多相关文章

  1. FastJSON 简单使用

    FastJSON是一个Java语言编写的高性能,功能完善,完全支持http://json.org的标准的JSON库.多了不说了,百度一下一大把. 在此,简单的总结一下自己用过,测试过的方法. 如果使用 ...

  2. Fastjson简单使用方法

    一.简单数据的序列化 pubic class UserInfo implements Serializable{ private String name; private int age; publi ...

  3. FastJson简单使用

    首先建立两个实体类,Student.java 和 Teacher.java public class Student { private int id; private String name; pr ...

  4. fastjson的JSONArray和JSONObject

    转自: http://blog.csdn.net/tangerr/article/details/76217924 Fastjson是国内著名的电子商务互联网公司阿里巴巴内部开发的用于java后台处理 ...

  5. fastjson对json字符串JSONObject和JSONArray互相转换操作示例

    2017-03-25 直接上代码: package com.tapt.instance; import com.alibaba.fastjson.JSON; import com.alibaba.fa ...

  6. fastjson简单使用demo,@JSONField注解属性字段上与set、get方法上。实体类toString(),实体类转json的区别;_下划线-减号大小写智能匹配

    一.demo代码 @JSONField注解属性字段上与set.get方法上.使用@Data注解(lombok插件安装最下方),对属性“笔名”[pseudonym]手动重写setter/getter方法 ...

  7. Jackson和fastjson简单用法及性能对比

    背景: Java处理JSON数据有三个比较流行的类库FastJSON.Gson和Jackson.fastjson是阿里做的国有开源Java工具包,jackson是spring mvc内置的json转换 ...

  8. fastJson简单实用

    public class FastJsonText { @Test public void text(){ User user1 = new User(); user1.setName("健 ...

  9. fastjson中Map与JSONObject互换,List与JOSNArray互换的实现

    1.//将map转换成jsonObject JSONObject itemJSONObj = JSONObject.parseObject(JSON.toJSONString(itemMap)); 将 ...

随机推荐

  1. Find The Multiple--POJ1426

    Description Given a positive integer n, write a program to find out a nonzero multiple m of n whose ...

  2. hibernate注解(一)JoinColumn

    @Entity @Table(name="t_group") public class Group { private int id; private String name; p ...

  3. 【Python-虫师】自动化测试模型--参数化

    一.自动化测试代码最开始是线性的,后续发展为模块化代码,所以涉及到了函数和方法的引用. 1. 函数和方法的最主要区别: Python的方法中定义函数的时候,函数中必须写self.而单独定义函数的时候则 ...

  4. 查看Django和flask版本

    查看Django版本 检查是否安装成功,可以在dos下查看Django版本. 1.输入python 2.输入import django 3.输入django.get_version() 1 2 3 4 ...

  5. AngularJS 表达式 对象和数组

    AngularJS 使用 表达式 把数据绑定到 HTML. AngularJS 表达式 AngularJS 表达式写在双大括号内:{{ expression }}. AngularJS 表达式把数据绑 ...

  6. Chrome Input框老是有输入记录的终极解决方案

    尤其是日期框,输入记录都挡住日期弹框了. 浏览器地址栏输入: chrome://settings/autofill,按钮关掉就可以了.

  7. 浅谈Android View滑动和弹性滑动

    引言 View的滑动这一块在实际开发中是非常重要的,无论是优秀的用户体验还是自定义控件都是需要对这一块了解的,我们今天来谈一下View的滑动. View的滑动 View滑动功能主要可以使用3种方式来实 ...

  8. 全文搜索引擎Xapian

    安装过程 安装xapian-core wget http://oligarchy.co.uk/xapian/1.0.13/xapian-core-1.0.13.tar.gztar zxvf xapia ...

  9. 完整table

    .table-bordered{ border:1px solid #cccccc; } .table { border-spacing: 0;/*设置或检索当表格边框独立时(即border-coll ...

  10. 使用点击二分图传导计算query-document的相关性

    之前的博客中已经介绍了Ranking Relevance的一些基本情况(Click Behavior,和Text Match):http://www.cnblogs.com/bentuwuying/p ...