FastJSON 简介及其Map/JSON/String 互转

在日志解析,前后端数据传输交互中,经常会遇到 String 与 map、json、xml 等格式相互转换与解析的场景,其中 json 基本成为了跨语言、跨前后端的事实上的标准数据交互格式。应该来说各个语言中 解析 json 的库都一大片(具体 json 格式与三方库的介绍请见: http://www.json.org/json-zh.html ),比如 python 都集成在了内置库中,成为标准 API,今天我们要聊的是 java 中如何方便的使用 json 格式。

从上面的链接介绍中我们可以看到,java 的三方 json 库是最多的,可谓百花齐放百家争鸣的节奏。。。但是,某些库存在链式依赖的问题,使用的时候要注意,如果你没用 maven 管你你的依赖,用起来会很痛苦,比如 json-lib、smart-json 等。下面我要推荐的是阿里巴巴工程师开源的一个 json 库:FastJSON,这个库在解析速度和易用性上来说都很不错。  

1、了解fastjson

1.1 Fastjson介绍

Fastjson是一个Java语言编写的JSON处理器。 
1、遵循 http://json.org 标准,为其官方网站收录的参考实现之一。 
2、功能qiang打,支持JDK的各种类型,包括基本的JavaBean、Collection、Map、Date、Enum、泛型。 
3、无依赖,不需要例外额外的jar,能够直接跑在JDK上。 
4、开源,使用Apache License 2.0协议开源。

1.2 如果获得Fastjson? 
https://github.com/alibaba/fastjson

2、主要的使 用入口

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。

3、有关类库的一些说明

SerializeWriter:相当于StringBuffer

JSONArray:相当于List<Object>

JSONObject:相当于Map<String, Object>

JSON反序列化没有真正数组,本质类型都是List<Object>

4、fastjson还有很多很高级的特性

比如支持注解、支持全类型序列化,这些都是很好的特性,功能强大,不在本次测试范围。

5、测试代码

package lavasoft.stu.json; 

import com.alibaba.fastjson.JSON; 
import com.alibaba.fastjson.serializer.SerializeConfig; 
import com.alibaba.fastjson.serializer.SimpleDateFormatSerializer; 

import java.util.*; 

/** 
* Created by IntelliJ IDEA. 
* 
* @author leizhimin 11-11-22 上午9:15 
*/ 
public class Foo {
    
  private String vString = "vStringhehhehe"; 
  private char vchar = 'x'; 

  private byte vbyte = 64; 
  private short vshort = 128; 
  private int vint = 65535; 
  private long vlong = 9999999L; 

  private float vfloat = 12.1f; 
  private double vdouble = 22.203d; 

  private boolean vboolean = false; 

//	private Date vdate = new Date(); 
  private Date dddd = new Date(); 
  private Date vDate = new Date(); 
  private Date v_Date = new Date(); 
  private Object vnull = null; 

  private String[] avString = {
  "aaa", "bbb", "ccc"}; 
  private int[] avint = {
  1, 2, 3, 4}; 
  private boolean[] avboolean = {
  true, false, true, true}; 

  private List<String> listString = new ArrayList<String>(); 
  private Map<String, String> map = new HashMap<String, String>(); 

  private Bar bar = new Bar(); 
  private
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值