FastJson是由阿里巴巴工程师写的一款是性能很好的用 Java 语言实现的 JSON 解析器和生成器。目前是市面上最好用json工具,不仅速度快,而且十分强大支持(普通JDK类包括任意Java Bean Class、Collection、Map、Date或enum,无依赖,不需要例外额外的jar,能够直接跑在JDK上)。总之,解析或者生成json,FastJson你值得拥有。
使用FastJson的第一步当然是引入jar包了,如果是maven项目需要在pom.xml中加入
<!-- fastjson -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.30</version>
</dependency>
如果是普通的JavaWeb项目就去官网下载吧!
FastJson常用的方法:
import com.alibaba.fastjson.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。
代码示例:
public static void main(String[] args) {
String json="{\"code\":200,\"message\":\"查询成功\",\"data\":[{\"id\":1,\"age\":22,\"name\":\"zhangsan\"},{\"id\":1,\"age\":22,\"name\":\"zhangsan\"}]}";
System.out.println(json.toString());
//将String字符串转换成json
JSONObject obj=JSONObject.parseObject(json);
//从json中得到字符串
String message=obj.getString("message");
System.out.println(message);
//从json中得到list集合
String data=obj.getString("data");
List<PersonInfo> list=obj.parseArray(data, PersonInfo.class);
System.out.println(list);
//将JavaBean转换为json
for(PersonInfo per:list){
System.out.println(JSONObject.toJSON(per));
}
}
运行结果为:
{"code":200,"message":"查询成功","data":[{"id":1,"age":22,"name":"zhangsan"},{"id":1,"age":22,"name":"zhangsan"}]}
查询成功
[PersonInfo(id=1, age=22, name=zhangsan), PersonInfo(id=1, age=22, name=zhangsan)]
{"id":1,"name":"zhangsan","age":22}
{"id":1,"name":"zhangsan","age":22}
FastJson还是比较方便快捷的。
分享一个封装了FastJson的jsonUtil
package com.rlist.constants;
import java.math.BigDecimal;
import org.apache.commons.lang3.StringUtils;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import lombok.extern.slf4j.Slf4j;
/**
*
* @classDesc: 功能描述:(对阿里巴巴旗下fastjson json封装)
* @author:
* @createTime: 2017年5月9日 下午7:18:37
* @version: v1.0
* @copyright:
*/
@Slf4j
public class JSONUtils {
/**
* 功能说明:获取JSONObject对象
*/
public static JSONObject getJSONObject(JSONObject obj, String key) {
if (!obj.containsKey(key)) {
return null;
}
return obj.getJSONObject(key);
}
/**
* 功能说明:获取String
*/
public static String getString(JSONObject obj, String key) {
if (!obj.containsKey(key)) {
return null;
}
return obj.getString(key);
}
/**
* 功能说明:获取BigDecimal
*/
public static BigDecimal getBigDecimal(JSONObject obj, String key) {
if (!obj.containsKey(key)) {
return null;
}
return obj.getBigDecimal(key);
}
/**
* 功能说明:将JSON字符穿
*/
public static JSONObject parseObject(String json) {
if (StringUtils.isEmpty(json)) {
return null;
}
JSONObject parseObject = null;
try {
parseObject = JSONObject.parseObject(json);
} catch (Exception e) {
log.error("parseObject() ERROR:" + e);
}
return parseObject;
}
/**
* 功能说明:将JSON字符串转为JSONARRAY
*/
public static JSONArray parseJSONArray(String json) {
if (StringUtils.isEmpty(json)) {
return null;
}
JSONArray JSONArray = null;
try {
JSONArray = JSONObject.parseArray(json);
} catch (Exception e) {
log.error("parseObject() ERROR:" + e);
}
return JSONArray;
}
/**
* 功能说明:将JSON字符穿
*/
public static JSONArray getJSONArray(JSONObject obj, String key) {
if (!obj.containsKey(key)) {
return null;
}
return obj.getJSONArray(key);
}
/**
* 功能说明: 获取json long结果
*/
public static Long getLong(JSONObject obj, String key) {
if (!obj.containsKey(key)) {
return null;
}
Long value = null;
try {
value = obj.getLong(key);
} catch (Exception e) {
log.error("getLong() ERROR:", e);
}
return value;
}
}