一、FastJosn
简介:
Fastjson是一个Java语言编写的高性能功能完善的JSON库。
Fastjson采用独创的算法,将parse的速度提升到极致,超过所有json库,包括曾经号称最快的jackson。并且还超越了google的二进制协议protocol buf。
Fastjson完全支持http://json.org的标准,也是官方网站收录的参考实现之一。
支持各种JDK类型。包括基本类型、JavaBean、Collection、Map、Enum、泛型等。
下载:
官网:
http://code.alibabatech.com/mvn/releases/com/alibaba/fastjson/
http://download.csdn.net/detail/wangjianwei_/7494545
FastJson工具类代码:
import java.util.Date;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializeConfig;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.alibaba.fastjson.serializer.SimpleDateFormatSerializer;
public class FastjsonUtil {
private static SerializeConfig mapping = new SerializeConfig();
/**
* Object转化成json
* 默认处理时间
* @param jsonText
* @return
*/
public static String object2json(Object jsonText) {
return JSON.toJSONString(jsonText, SerializerFeature.WriteDateUseDateFormat);
}
/**
* Object转化成json
* 自定义时间格式
* @param jsonText
* @return
*/
public static String object2json(String dateFormat, Object jsonText) {
mapping.put(Date.class, new SimpleDateFormatSerializer(dateFormat));
return JSON.toJSONString(jsonText, mapping);
}
/**
* JSON转化成Object
*
* @param jsonText
* @param clazz
* @return
*/
public static <T> T json2object(String jsonText, Class<T> clazz) {
return (T) JSON.parseArray(jsonText, clazz);
}
}
二、Jackson
下载:
http://download.csdn.net/detail/wangjianwei_/7494589
Jackson工具类代码:
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
public class JacksonUtil {
private final static ObjectMapper objectMapper = new ObjectMapper();
private JacksonUtil() {
}
public static ObjectMapper getInstance() {
return objectMapper;
}
/**
* Bean转化成Json
*/
public static String obj2json(Object obj) throws Exception {
return objectMapper.writeValueAsString(obj);
}
/**
* Json转化成Bean
*/
public static <T> T json2pojo(String jsonStr, Class<T> clazz) throws Exception {
return objectMapper.readValue(jsonStr, clazz);
}
/**
* Json转化成Map
*/
public static <T> Map<String, Object> json2map(String jsonStr) throws Exception {
return objectMapper.readValue(jsonStr, Map.class);
}
/**
* Json转化成Map(指定Bean类型)
*/
public static <T> Map<String, T> json2map(String jsonStr, Class<T> clazz) throws Exception {
Map<String, Map<String, Object>> map = objectMapper.readValue(jsonStr, new TypeReference<Map<String, T>>() {});
Map<String, T> result = new HashMap<String, T>();
for (Entry<String, Map<String, Object>> entry : map.entrySet()) {
result.put(entry.getKey(), map2pojo(entry.getValue(), clazz));
}
return result;
}
/**
* Json转化成List
*/
public static <T> List<T> json2list(String jsonArrayStr, Class<T> clazz) throws Exception {
List<Map<String, Object>> list = objectMapper.readValue(jsonArrayStr, new TypeReference<List<T>>() {});
List<T> result = new ArrayList<T>();
for (Map<String, Object> map : list) {
result.add(map2pojo(map, clazz));
}
return result;
}
/**
* Map转化成Bean
*/
public static <T> T map2pojo(Map map, Class<T> clazz) {
return objectMapper.convertValue(map, clazz);
}
}
三、Json-lib
下载:
http://download.csdn.net/detail/wangjianwei_/7494617
Json-lib工具类代码:
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import net.sf.ezmorph.object.DateMorpher;
import net.sf.json.JSONArray;
import net.sf.json.JSONObject;
import net.sf.json.JsonConfig;
import net.sf.json.processors.JsonValueProcessor;
import net.sf.json.util.CycleDetectionStrategy;
import net.sf.json.util.JSONUtils;
public class JsonlibUtil {
/**
* Json转化成Bean
*/
@SuppressWarnings("unchecked")
public static <T> T jsonToObject(String jsonString, Class<T> pojoCalss) {
Object pojo;
JSONObject jsonObject = JSONObject.fromObject(jsonString);
pojo = JSONObject.toBean(jsonObject, pojoCalss);
return (T) pojo;
}
/**
* Json转化成List
*/
@SuppressWarnings("unchecked")
public static <T> List<T> jsonToList(String jsonString, Class<T> pojoClass) {
JSONArray jsonArray = JSONArray.fromObject(jsonString);
JSONObject jsonObject;
Object pojoValue;
List<T> list = new ArrayList<T>();
for (int i = 0; i < jsonArray.size(); i++) {
jsonObject = jsonArray.getJSONObject(i);
pojoValue = JSONObject.toBean(jsonObject, pojoClass);
list.add((T) pojoValue);
}
return list;
}
/**
* Json转化成List,并格式化时间
*/
@SuppressWarnings("unchecked")
public static <T> List<T> jsonToList(String jsonString, Class<T> pojoClass, String dataFormat) {
JsonConfig jsonConfig = configJson(dataFormat);
JSONArray jsonArray = JSONArray.fromObject(jsonString, jsonConfig);
JSONObject jsonObject;
Object pojoValue;
List<T> list = new ArrayList<T>();
for (int i = 0; i < jsonArray.size(); i++) {
jsonObject = jsonArray.getJSONObject(i);
pojoValue = JSONObject.toBean(jsonObject, pojoClass);
list.add((T) pojoValue);
}
return list;
}
/**
* Object转化成Json
*/
public static String objectToJson(Object javaObj) {
JSONObject json;
json = JSONObject.fromObject(javaObj);
return json.toString();
}
/**
* Object转化成Json,并设定日期格式
*/
public static String objectToJson(Object javaObj, String dataFormat) {
JSONObject json;
JsonConfig jsonConfig = configJson(dataFormat);
json = JSONObject.fromObject(javaObj, jsonConfig);
return json.toString();
}
/**
* List转化Json
*/
public static <T> String listToJson(List<T> list) {
JSONArray json;
json = JSONArray.fromObject(list);
return json.toString();
}
/**
* List转化Json
*/
public static <T> String listToJson(List<T> list, String dataFormat) {
JSONArray json;
JsonConfig jsonConfig = configJson(dataFormat);
json = JSONArray.fromObject(list, jsonConfig);
return json.toString();
}
/**
* JSON 时间解析器
*/
public static JsonConfig configJson(final String datePattern) {
JSONUtils.getMorpherRegistry().registerMorpher(new DateMorpher(new String[] { datePattern }));
JsonConfig jsonConfig = new JsonConfig();
jsonConfig.setIgnoreDefaultExcludes(false);
jsonConfig.setCycleDetectionStrategy(CycleDetectionStrategy.LENIENT);
jsonConfig.registerJsonValueProcessor(Date.class, new JsonValueProcessor() {
@Override
public Object processObjectValue(String key, Object value, JsonConfig jsonConfig) {
if (value instanceof Date) {
String str = new SimpleDateFormat(datePattern).format((Date) value);
return str;
}
return value == null ? null : value.toString();
}
@Override
public Object processArrayValue(Object value, JsonConfig jsonConfig) {
String[] obj = {};
if (value instanceof Date[]) {
SimpleDateFormat sf = new SimpleDateFormat(datePattern);
Date[] dates = (Date[]) value;
obj = new String[dates.length];
for (int i = 0; i < dates.length; i++) {
obj[i] = sf.format(dates[i]);
}
}
return obj;
}
});
return jsonConfig;
}
}