
fastjson 是一个性能很好的 Java 语言实现的 JSON 解析器和生成器,来自阿里巴巴的工程师开发。
官方下载地址https://github.com/alibaba/fastjson
主要特点:
1.快速FAST (比其它任何基于Java的解析器和生成器更快,包括jackson)
2.强大(支持普通JDK类包括任意Java Bean Class、Collection、Map、Date或enum)
3.零依赖(没有依赖其它任何类库除了JDK)
示例代码
1.实体类
普通实体类 User.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94
   | package net.hifor.demo;
  public class User {   private String userid;   private String name;   private int[] departments;   private String position;   private String mobile;   private String gender;   private String email;   private String weixinid;   private String avatar_mediaid;   private String extattr;
    public void setUserid(String userid) {     this.userid = userid;   }
    public String getUserid() {     return this.userid;   }
    public void setName(String name) {     this.name = name;   }
    public String getName() {     return this.name;   }
    public int[] getDepartments() {     return departments;   }
    public void setDepartments(int[] departments) {     this.departments = departments;   }
    public void setPosition(String position) {     this.position = position;   }
    public String getPosition() {     return this.position;   }
    public void setMobile(String mobile) {     this.mobile = mobile;   }
    public String getMobile() {     return this.mobile;   }
    public void setGender(String gender) {     this.gender = gender;   }
    public String getGender() {     return this.gender;   }
    public void setEmail(String email) {     this.email = email;   }
    public String getEmail() {     return this.email;   }
    public void setWeixinid(String weixinid) {     this.weixinid = weixinid;   }
    public String getWeixinid() {     return this.weixinid;   }
    public void setAvatar_mediaid(String avatar_mediaid) {     this.avatar_mediaid = avatar_mediaid;   }
    public String getAvatar_mediaid() {     return this.avatar_mediaid;   }
    public void setExtattr(String extattr) {     this.extattr = extattr;   }
    public String getExtattr() {     return this.extattr;   } }
   | 
 
泛型类 Result.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
   | package net.hifor.demo;
 
  public class Result<T> {
    private String errorcode;   private String errormes;   private T data;
       public String getErrorcode() {     return errorcode;   }
    public void setErrorcode(String errorcode) {     this.errorcode = errorcode;   }
    public String getErrormes() {     return errormes;   }
    public void setErrormes(String errormes) {     this.errormes = errormes;   }
    public T getData() {     return data;   }
    public void setData(T data) {     this.data = data;   } }
 
   | 
 
2.使用FastJson解析JSON
序列化,并格式化JSON字符串
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
   |  User user = new User(); user.setUserid("1001001"); user.setName("张三"); user.setDepartments(new int[]{1,2}); user.setPosition("产品经理"); user.setMobile("15913215421"); user.setGender("1"); user.setEmail("[email protected]"); user.setWeixinid("zhangsan4dev"); user.setAvatar_mediaid("2-G6nrLmr5EC3MNb_-zL1dDdzkd0p7cNliYu9V5w7o8K0");
 
  String json =  JSONObject.toJSONString(user);
  System.out.println(JSONObject.toJSONString(user, true));
 
  | 
 
反序列化普通对象,
1 2 3
   |  User deserializableUser = JSONObject.parseObject(json, User.class); System.out.println("姓名:" + deserializableUser.getName());
 
  | 
 
反序列化泛型对象,针对泛型类型,需要使用TypeReference进行解析
1 2 3 4 5
   | json = "{\"errorcode\":\"0\",\"errormes\":\"ok\",\"data\":"+json+"}";
  Result<User> result = JSONObject.parseObject(json, new TypeReference<Result<User>>(){}); System.out.println("手机:" + result.getData().getMobile()); System.out.println(JSONObject.toJSONString(result, true));
  | 
 
原文地址:http://hifor.net/posts/20150927-a5c0330a.html