package com.xxx.utils;
import java.util.Map;
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.TypeReference;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.alibaba.fastjson.serializer.ValueFilter;
public final class JSONUtil {
/**
* 默认json格式化方式
*/
public static final SerializerFeature[] DEFAULT_FORMAT = {
SerializerFeature.DisableCircularReferenceDetect,
SerializerFeature.WriteDateUseDateFormat,
SerializerFeature.WriteEnumUsingToString,
SerializerFeature.IgnoreNonFieldGetter,
SerializerFeature.SkipTransientField,
SerializerFeature.WriteNullBooleanAsFalse,
SerializerFeature.WriteNullNumberAsZero,
SerializerFeature.WriteNullStringAsEmpty,
SerializerFeature.WriteNullListAsEmpty,
SerializerFeature.WriteNullBooleanAsFalse,
SerializerFeature.WriteMapNullValue, };
public static final ValueFilter filter = new ValueFilter() {
@Override
public Object process(Object obj, String s, Object v) {
if (v == null)
return "";
return v;
}
};
private JSONUtil() {
}
/**
* 从json获取指定key的字符串
*
* @param json
* json字符串
* @param key
* 字符串的key
* @return 指定key的值
*/
public static Object getStringFromJSONObject(final String json,
final String key) {
return JSON.parseObject(json).getString(key);
}
/**
* 将字符串转换成JSON字符串
*
* @param jsonString
* json字符串
* @return 转换成的json对象
*/
public static JSONObject getJSONFromString(final String jsonString) {
if (StrUtil.isBlank(jsonString)) {
return new JSONObject();
}
return JSON.parseObject(jsonString);
}
/**
* 将json字符串,转换成指定java bean
*
* @param jsonStr
* json串对象
* @param beanClass
* 指定的bean
* @param <T>
* 任意bean的类型
* @return 转换后的java bean对象
*/
public static <T> T toBean(String jsonStr, Class<T> beanClass) {
return JSON.parseObject(jsonStr, beanClass);
}
public static <T> T toBean(String jsonStr, TypeReference<T> type) {
return JSON.parseObject(jsonStr, type);
}
/**
* @param obj
* 需要转换的java bean
* @param <T>
* 入参对象类型泛型
* @return 对应的json字符串
*/
public static <T> String toJson(T obj) {
return JSON.toJSONString(obj, DEFAULT_FORMAT);
}
/**
* 通过Map生成一个json字符串
*
* @param map
* 需要转换的map
* @return json串
*/
public static String toJson(Map<String, Object> map) {
return JSON.toJSONString(map, DEFAULT_FORMAT);
}
/**
* 美化传入的json,使得该json字符串容易查看
*
* @param jsonString
* 需要处理的json串
* @return 美化后的json串
*/
public static String prettyJson(String jsonString) {
return JSON.toJSONString(getJSONFromString(jsonString), true);
}
public static <T> String prettyJson(T obj) {
return JSON.toJSONString(obj, true);
}
/**
* 将传入的json字符串转换成Map
*
* @param jsonString
* 需要处理的json串
* @return 对应的map
*/
public static Map<String, Object> toMap(String jsonString) {
return getJSONFromString(jsonString);
}
}