content: package com.alibaba.json.test.epubview;
  
  import java.io.BufferedReader;
  import java.io.IOException;
  import java.io.InputStreamReader;
  
  import junit.framework.TestCase;
  
  import com.alibaba.fastjson.JSON;
  import com.alibaba.fastjson.parser.Feature;
  import com.alibaba.fastjson.serializer.SerializerFeature;
  import com.fasterxml.jackson.core.JsonParseException;
  import com.fasterxml.jackson.core.JsonProcessingException;
  import com.fasterxml.jackson.databind.JsonMappingException;
  import com.fasterxml.jackson.databind.ObjectMapper;
  import com.google.gson.Gson;
  
  public class TestKlutz extends TestCase {
  
      private EpubViewBook book;
      
      ObjectMapper mapper = new ObjectMapper();
      Gson gson = new Gson();
      
      private EpubViewBook book_jackson;
      private EpubViewBook book_fastjson;
      
      private int LOOP_COUNT = 1000 * 1;
  
      @Override
      protected void setUp() throws Exception {
          InputStreamReader isr = new InputStreamReader(
                                                        Thread.currentThread().getContextClassLoader().getResourceAsStream("epub.json"));
          BufferedReader reader = new BufferedReader(isr);
          StringBuilder sb = new StringBuilder();
  
          String temp;
          while ((temp = reader.readLine()) != null) {
              sb.append(temp);
          }
          String s = sb.toString();
  
          this.book = JSON.parseObject(s, EpubViewBook.class);
      }
  
      public void test_0() throws Exception {
  
  
          for (int j = 0; j < 5; j++) {
              fastjson();
              //gson();
              jackson();
  
              System.out.println("=======================");
          }
      }
  
      private String jackson() throws Exception {
          String s = mapper.writeValueAsString(book);
          Long startTime;
          // Jackson
          startTime = System.currentTimeMillis();
          for (int i = 0; i < LOOP_COUNT; i++) {
              book_jackson = mapper.readValue(s, EpubViewBook.class);
              //s = mapper.writeValueAsString(epubViewBook);
          }
          System.out.println("Jackson:" + (System.currentTimeMillis() - startTime) + ", " + s.length());
          System.out.println(s);
          return s;
      }
  
      private String gson() throws Exception {
          String s = gson.toJson(book);
          
          Long startTime;
          // Gson
          startTime = System.currentTimeMillis();
          for (int i = 0; i < LOOP_COUNT; i++) {
              EpubViewBook epubViewBook = gson.fromJson(s, EpubViewBook.class);
              s = gson.toJson(epubViewBook);
          }
          System.out.println("Gson:" + (System.currentTimeMillis() - startTime) + ", " + s.length());
          return s;
      }
  
      private String fastjson() {
          String s = JSON.toJSONString(book, SerializerFeature.DisableCircularReferenceDetect);
          
          Long startTime;
          // Fastjson
          startTime = System.currentTimeMillis();
          for (int i = 0; i < LOOP_COUNT; i++) {
              book_fastjson = JSON.parseObject(s, EpubViewBook.class, Feature.DisableCircularReferenceDetect);
              //s = JSON.toJSONString(epubViewBook, SerializerFeature.DisableCircularReferenceDetect);
          }
          System.out.println("Fastjson:" + (System.currentTimeMillis() - startTime) + ", " + s.length());
          System.out.println(s);
          return s;
      }
  }
  