Json应用之FastJson

FastJson是阿里巴巴开发的高性能JSON库,支持Java Bean、Collection、Map、Enum等类型的序列化和反序列化,具备高性能、无依赖、浏览器和设备兼容性好等特点。本文详细介绍了FastJson的使用,包括序列化时的WriteClassName特性、反序列化指定Class信息、泛型反序列化、以及如何从json-lib升级到FastJson。
摘要由CSDN通过智能技术生成

FastJson

简介

Fastjson是一个Java语言编写的高性能功能完善的JSON库,由阿里巴巴公司开发。


高性能:Fastjson采用独创的算法,将parse的速度提升到极致,超过所有json库,包括曾经号称最快的jackson。并且还超越了google的二进制协议protocol buf。

支持标准:Fastjson完全支持http://json.org的标准,也是官方网站收录的参考实现之一。

功能强大:支持各种JDK类型。包括基本类型、JavaBean、Collection、Map、Enum、泛型等。支持循环引用。支持注解、支持全类型序列化。

无依赖:不需要例外额外的jar,能够直接跑在JDK上。

支持范围广:支持JDK 5、JDK 6、Android、阿里云手机等环境。

开源:Apache License 2.0代码托管在github.org上,项目地址是 https://github.com/AlibabaTech/fastjson


获得Fastjson

下载:http://code.alibabatech.com/mvn/releases/com/alibaba/fastjson/

maven:如果你使用了Maven,maven repository配置如下:

<repository>
     <id>opensesame</id>
     <name>Alibaba OpenSource Repsoitory</name>
     <url>http: //code.alibabatech.com/mvn/releases/</url>
     <snapshots>
         <enabled> false </enabled>
     </snapshots>
</repository>

pom.xml文件中加入依赖依赖:

<dependency>
     <groupId>com.alibaba</groupId>
     <artifactId>fastjson</artifactId>
     <version> 1.1 . 14 </version>
</dependency>

主要使用入口

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> 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。

相关类库说明

SerializeWriter:相当于StringBuffer
JSONArray:相当于List<Object>
JSONObject:相当于Map<String, Object>
 
JSON反序列化没有真正数组,本质类型都是List<Object>

序列化

一个JSON库涉及的最基本功能就是序列化和反序列化。Fastjson支持java bean的直接序列化。你可以使用com.alibaba.fastjson.JSON这个类进行序列化和反序列化。

基本序列化

序列化就是把JavaBean对象转化成JSON格式的文本。

Object o = ...;
String text = JSON.toJSONString(o);

在这个例子中,调用JSON.toJSONString方法,把对象o转化为JSON格式的文本。

使用单引号

标准的JSON是使用双引号的,javascript支持使用单引号格式的json文本,fastjson也支持这个特性,打开SerializerFeature.UseSingleQuotes这个特性就可以了了,例如:

Object o = ...;
String text = JSON.toJSONString(o, SerializerFeature.UseSingleQuotes);

fastjson序列化时可以选择的SerializerFeature有十几个,你可以按照自己的需要去选择使用。

日期格式化

fastjson直接支持日期类型数据的格式化,包括java.util.Date、java.sql.Date、java.sql.Timestamp、java.sql.Time。

缺省情况下,fastjson将Date类型序列化为long,这个使得序列化和反序列化的过程不会导致时区问题。如:
例如:

long millis = 1324138987429L;
Date date = new
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值