使用FastJson导出JSON

概述

fastjson是目前java语言中最快的json库,比自称最快的jackson速度要快,比gson快大约6倍。

https://github.com/alibaba/fastjson

FastJson常用方法

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。

Java ==> JSON

步骤

  • step1. 导入jar包
  • step2. 构建POJO
  • step3. 将POJO转换为JSON字符串:
    • JSON.toJSONString( 顶级POJO对象的引用 ) => 纯字符串,只有一行
    • JSON.toJSONString( 顶级POJO对象的引用, true) => 带格式
// 1)将JavaBean序列化为JSON文本 
public static final String toJSONString(Object object);

// 2)将JavaBean序列化为带格式的JSON文本
public static final String toJSONString(Object object, boolean prettyFormat); 

一个简单的Demo

  • User.java
  public class User {
      private String username;
      private String password;
      
      // 构造器、方法略 
  }
  • UserGroup.java
  public class UserGroup {
      private String name;
      private List<User> users;
      
      // 构造器、方法略
  }
  • TestFastJson.java
  public class TestFastJson {
      @Test
      public void objectToJson() {
          // 简单的Java类转Json
          User user = new User("ali", "123456");
          String userJson = JSON.toJSONString(user);
          System.out.println("简单Java类转Json字符串:"+ userJson);
          
          // List<Object>类转Json
          User user1 = new User("coco", "123456");
          User user2 = new User("ly", "789");
          
          List<User> users = new ArrayList<User>();
          users.add(user1);
          users.add(user2);
          
          String listJson = JSON.toJSONString(users);
          System.out.println("List<Object>转Json字符串" + listJson);
          
          // 复杂的Java类转Json字符串
          UserGroup userGroup = new UserGroup("userGroup", users);
          String userGroupJson = JSON.toJSONString(userGroup);
          System.out.println("复杂的Java类转Json字符串:" + userGroupJson);
      }
  }
  • 控制台输出结果:
  简单Java类转Json字符串:{"password":"123456","username":"ali"}
  List<Object>转Json字符串:[{"password":"123456","username":"coco"},{"password":"789","username":"ly"}]
  复杂的Java类转Json字符串:{"name":"userGroup","users":[{"password":"123456","username":"coco"},{"password":"789","username":"ly"}]}

Demo2

  • User.java
  public class User {
      private int id;
      private String name;
      private Computer computer;
      
      // 构造器、方法略
  }
  • Computer.java
  public class Computer {
      private String brand;
      private String CPUdegree;
      
      // 构造器、方法略
  }
  • TestObject.java
  package josn.mydemo;

  import org.junit.Test;

  import com.alibaba.fastjson.JSON;

  public class TestObject {
      @Test
      public void test() {
          Computer computer = new Computer("Thinkpad", "intel core i7");
          User user = new User(1, "大白", computer);
          String userJson = JSON.toJSONString(user);
          System.out.println(userJson);
      }
  }

  • 结果:

笔记

  • 定义POJO时,由里到外,先定义最里面的对象
  • 在fastjson中,缺省是不输出空值的。无论Map中的null和对象属性中的null,序列化的时候都会被忽略不输出,这样会减少产生文本的大小。 => 来自官方文档
posted @ 2020-08-11 10:19  daheww  阅读(490)  评论(0编辑  收藏  举报