Java FastJson 源码分析(一) 之 简单应用

fastjson是一个性能很好的Java语言实现的JSON解析器和生成器,来自阿里的工程师开发。提供了Java对象快速序列化和发序列化的工具。

主要特点:

?快速FAST(比其它任何基于Java的解析器和生成器更快)

?强大(支持普通JDK类包括任意JavaBean Class、Collection、Map、Date或enum)

?零依赖(没有依赖其它任何类库除了JDK)

具体应用方式:

1.首先在官网上下载fastjson.jar文件,下载方式提供了以下三种:

SVN:http://code.alibabatech.com/svn/fastjson/trunk/

WIKI:http://code.alibabatech.com/wiki/display/FastJSON/Home

Issue Tracking:http://code.alibabatech.com/jira/browse/FASTJSON

2.将fastjson.jar引入classpath下,

3.使用示例:

public class JsonUtil {

  private static Logger logger = Logger.getLogger(JsonUtil.class);

  /**
   * @param t
   *          待解析对象
   * @param v
   *          目标对象
   * @return V
   */
  public static <T, V> V parseToObject(T t, Class<V> v) {
    try {
      String json = JSON.toJSONString(t,
          SerializerFeature.WriteDateUseDateFormat);
      return JSON.parseObject(json, v);
    } catch (Exception ex) {
      logger.error(ex.getMessage(), ex);
      return null;
    }
  }

  /**
   * @param t
   *          待解析对象
   * @param v
   *          目标对象
   * @return V
   */
  public static <T, V> V parseObject(T t, Class<V> v) {
    try {
      String json = JSON.toJSONString(t,
          SerializerFeature.WriteDateUseDateFormat);
      return JSON.parseObject(json, v);
    } catch (Exception ex) {
      logger.error(ex.getMessage(), ex);
      return null;
    }
  }

  /**
   * @param t
   *          待转换对象
   * @return 转换后的字符串
   */
  public static <T> String toJsonString(T t) {
    try {
      return JSON.toJSONString(t, SerializerFeature.WriteDateUseDateFormat);
    } catch (Exception ex) {
      logger.error(ex.getMessage(), ex);
      return null;
    }
  }
}

在进行正常的JavaBean和Json之间简单转换的同时,fastjson还提供了SerializerFeature枚举,来实现一系列的针对不同数据类型的格式化标志,如上使用了SerializerFeature.WriteDateUseDateFormate对日期格式进行格式化,否则JavaBean转换至Json数据时可能会以时间戳的方式显示,无法正常应用。

上面示例提供了一种封装fastjson的方式,可以将任何类型的Java对象转换为jsonString,并进行反向转换,fastJson在使用API上和其他接口是很相近的,简单使用没有任何问题。

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-06 10:36:40

Java FastJson 源码分析(一) 之 简单应用的相关文章

Java 集合源码分析(一)HashMap

目录 Java 集合源码分析(一)HashMap 1. 概要 2. JDK 7 的 HashMap 3. JDK 1.8 的 HashMap 4. Hashtable 5. JDK 1.7 的 ConcurrentHashMap 6. JDK 1.8 的 ConcurrentHashMap 7. 最后补充一下 HashMap 中的一些属性和方法 附:更这个系列感觉自己像是又挖了一个坑??,不过趁自己刚好工作不太忙,有空闲期,静下心来研究学习源码也是一件很值得做的事,自己尽量会把这个坑填完??.

JAVA Collection 源码分析(一)之ArrayList

到今天为止,差不多已经工作一年了,一直在做的是javaweb开发,一直用的是ssh(sh)别人写好的框架,总感觉自己现在高不成低不就的,所以就像看看java的源码,顺便学习一下大牛的思想和架构,read and write一直是提高自己编程水平的不二法门,写博客只是记录自己的学习历程,方便回顾,写的不好的地方,请多多包含,不喜勿喷,好了废话少说,现在让我们开始我们的历程把,Let's go!!!!!!!! 想看源码无从下手,不知道有没有跟我一样感觉的人们,今天用Intellij发现了可以找出类与

JAVA Collection 源码分析(二)之SubList

昨天我们分析了ArrayList的源码,我们可以看到,在其中还有一个类,名为SubList,其继承了AbstractList. // AbstractList类型的引用,所有继承了AbstractList都可以传进来 private final AbstractList<E> parent; // 这个是其实就是parent的偏移量,从parent中的第几个元素开始的 private final int parentOffset; private final int offset; int s

超赞!推荐一个专注于Java后端源码分析的Github项目!

大家好,最近有小伙伴们建议我把源码分析文章及源码分析项目(带注释版)放到github上,这样小伙伴们就可以把带中文注释的源码项目下载到自己本地电脑,结合源码分析文章自己本地调试,总之对于学习开源项目源码会更方便. 因此下面提供[源码笔记]的Github地址,若您觉得不错,欢迎Star点亮哦: Github主页:https://github.com/yuanmabiji 源码分析文章:https://github.com/yuanmabiji/Java-SourceCode-Blogs Sprin

java 集合类源码分析--arrays

本文介绍一下java集合相关类arryas类的内容 .Arrays.sort()数组排序 Java Arrays中提供了对所有类型的排序.其中主要分为Primitive(8种基本类型)和Object两大类. 基本类型:采用调优的快速排序: 对象类型:采用改进的归并排序. 1.对于基本类型源码分析如下(以int[]为例): public static void sort(int[] a, int fromIndex, int toIndex) { //进行数组的界限检查 rangeCheck(a.

Java集合源码分析(四)Vector&lt;E&gt;

Vector<E>简介 Vector也是基于数组实现的,是一个动态数组,其容量能自动增长. Vector是JDK1.0引入了,它的很多实现方法都加入了同步语句,因此是线程安全的(其实也只是相对安全,有些时候还是要加入同步语句来保证线程的安全),可以用于多线程环境. Vector没有丝线Serializable接口,因此它不支持序列化,实现了Cloneable接口,能被克隆,实现了RandomAccess接口,支持快速随机访问. Vector<E>源码 如下(已加入详细注释): /*

Java集合源码分析(二)ArrayList

ArrayList简介 ArrayList是基于数组实现的,是一个动态数组,其容量能自动增长,类似于C语言中的动态申请内存,动态增长内存. ArrayList不是线程安全的,只能用在单线程环境下,多线程环境下可以考虑用Collections.synchronizedList(List l)函数返回一个线程安全的ArrayList类,也可以使用concurrent并发包下的CopyOnWriteArrayList类. ArrayList实现了Serializable接口,因此它支持序列化,能够通过

Java集合源码分析(三)LinkedList

LinkedList简介 LinkedList是基于双向循环链表(从源码中可以很容易看出)实现的,除了可以当做链表来操作外,它还可以当做栈.队列和双端队列来使用. LinkedList同样是非线程安全的,只在单线程下适合使用. LinkedList实现了Serializable接口,因此它支持序列化,能够通过序列化传输,实现了Cloneable接口,能被克隆. LinkedList源码 以下是linkedList源码(加入简单代码注释): /* * @(#)LinkedList.java 1.6

java 集合类源码分析--linkedlist

一.源码解析 1. LinkedList类定义2.LinkedList数据结构原理3.私有属性4.构造方法5.元素添加add()及原理6.删除数据remove()7.数据获取get()8.数据复制clone()与toArray()9.遍历数据:Iterator()二.ListItr 一.源码解析 1. LinkedList类定义. public class LinkedList<E> extends AbstractSequentialList<E> implements List