fastjson版本: 1.2.62
前言
我一直认为, 如果使用第三方工具, 一定是需要做一层封装, 这样才能最大限度分解软件结构的层次, 不至于牵一发而动全身, 比如我其实一直都是gson爱好者, 也使用了Gson做了一个工具类的封装(基于Gson封装的Java工具类), 但是因为一些特殊原因, 我调整为fastjson, 因为业务所有地方都使用了封装的JsonUtil
, 所以我对该类做了底层调整, 通过之前的单测之后, 无压力上线, 并稳定运行.
代码
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.JSONLibDataFormatSerializer;
import com.alibaba.fastjson.serializer.SerializeConfig;
import com.alibaba.fastjson.serializer.SerializerFeature;
import java.util.List;
import java.util.Map;
/**
* 基于fastjson封装json工具
*
* @author videomonster
* @since 1.0.0
*/
public final class JsonUtil {
private static final SerializeConfig SERIALIZE_CONFIG;
private static final SerializerFeature[] SERIALIZER_FEATURES = {
// 输出空置字段
SerializerFeature.WriteMapNullValue,
// list字段如果为null,输出为[],而不是null
SerializerFeature.WriteNullListAsEmpty,
// 数值字段如果为null,输出为0,而不是null
SerializerFeature.WriteNullNumberAsZero,
// Boolean字段如果为null,输出为false,而不是null
SerializerFeature.WriteNullBooleanAsFalse,
// 字符类型字段如果为null,输出为"",而不是null
SerializerFeature.WriteNullStringAsEmpty
};
static {
SERIALIZE_CONFIG = new SerializeConfig();
// 使用和json-lib兼容的日期输出格式
SERIALIZE_CONFIG.put(java.util.Date.class, new JSONLibDataFormatSerializer());
}
/**
* 将对象转为json字符串
*
* @param object
* @return
*/
public static String toFeaturesJson(Object object) {
return JSON.toJSONString(object, config, features);
}
/**
* 将对象转为json字符串
*
* @param object
* @return
*/
public static String toJson(Object object) {
return JSON.toJSONString(object, config);
}
/**
* 将json字符串转为Object实例
*
* @param json
* @return
*/
public static Object parse(String json) {
return JSON.parse(json);
}
/**
* 将json字符串转为指定类型的实例
*
* @param json
* @param cls
* @param <T>
* @return
*/
public static <T> T parse(String json, Class<T> cls) {
return JSON.parseObject(json, cls);
}
/**
* 将json转为Map
*
* @param json
* @param <T>
* @return
*/
@SuppressWarnings("unchecked")
public static <T> Map<String, T> toMap(String json) {
return (Map<String, T>) JSONObject.parseObject(json);
}
/**
* 将json转为指定类型的List
*
* @param json
* @param cls
* @param <T>
* @return
*/
public static <T> List<T> toList(String json, Class<T> cls) {
return JSON.parseArray(json, cls);
}
}
网友评论