package com.loan.system.utils; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.serializer.SerializeConfig; import com.alibaba.fastjson.serializer.SerializerFeature; import com.alibaba.fastjson.serializer.SimpleDateFormatSerializer; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.util.Date; import java.util.List; import java.util.Map; /** * @author EdwinXu * @date 2020/9/15 - 19:23 * @Description 基于 fastjson 封装的 json 工具类 */ public final class JsonUtil { private final static Logger logger = LoggerFactory.getLogger(JsonUtil.class); 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(); SERIALIZE_CONFIG.put(Date.class, new SimpleDateFormatSerializer("yyyy-MM-dd HH:mm:ss")); } /** * Object to Json String 字符串输出 * @param object * @return: java.lang.String */ public static String toJson(Object object){ try { return JSON.toJSONString(object); } catch (Exception e) { logger.error("JsonUtil | method=toJSON() | 对象转为Json字符串 Error!" + e.getMessage(), e); } return null; } /** * Object TO Json String Json-lib 兼容的日期输出格式 * @param object * @return: java.lang.String */ public static String toJSONLib(Object object) { try { return JSON.toJSONString(object, SERIALIZE_CONFIG, SERIALIZER_FEATURES); } catch (Exception e) { logger.error("JsonUtil | method=toJSONLib() | 对象转为 Json 字符串 Json-lib 兼容的日期输出格式 Error!" + e.getMessage(), e); } return null; } /** * 转换为数组 Object * @param text * @return: java.lang.Object[] */ public static Object[] toArray(String text) { try { return toArray(text, null); } catch (Exception e) { logger.error("JsonUtil | method=toArray() | 将json格式的数据转换为数组 Object Error!" + e.getMessage(), e); } return null; } /*** * 转换为数组 (可指定类型) * @param text * @param clazz * @return: java.lang.Object[] */ public static Object[] toArray(String text, Class clazz) { try { return JSON.parseArray(text, clazz).toArray(); } catch (Exception e) { logger.error("JsonUtil | method=toArray() | 将json格式的数据转换为数组 (可指定类型) Error!" + e.getMessage(), e); } return null; } /*** * Json 转为 Java Bean * @param text * @param clazz * @return: T */ public static T toBean(String text, Class clazz) { try { return JSON.parseObject(text, clazz); } catch (Exception e) { logger.error("JsonUtil | method=toBean() | Json 转为 Java Bean Error!" + e.getMessage(), e); } return null; } /** Json 转为 Map */ public static Map toMap(String json) { try { return JSON.parseObject(json); } catch (Exception e) { logger.error("JsonUtil | method=toMap() | Json 转为 Map {},{}" + e.getMessage(), e); } return null; } /*** * Json 转 List,Class 集合中泛型的类型,非集合本身,可json-lib兼容的日期格式 * @param text * @param clazz * @return: java.util.List */ public static List toList(String text, Class clazz) { try { return JSON.parseArray(text, clazz); } catch (Exception e) { logger.error("JsonUtil | method=toList() | Json 转为 List {},{}" + e.getMessage(), e); } return null; } }