zoukankan      html  css  js  c++  java
  • Gson/Jackson/FastJson工具类

    import java.util.ArrayList;
    import java.util.List;
    import java.util.Map;
    
    import com.google.gson.Gson;
    import com.google.gson.GsonBuilder;
    import com.google.gson.JsonArray;
    import com.google.gson.JsonElement;
    import com.google.gson.JsonParser;
    import com.google.gson.reflect.TypeToken;
    
    
    public class GsonUtil {
        //不用创建对象,直接使用Gson.就可以调用方法
        private static Gson gson = null;
        //判断gson对象是否存在了,不存在则创建对象
        static {
            if (gson == null) {
                //gson = new Gson();
                //当使用GsonBuilder方式时属性为空的时候输出来的json字符串是有键值key的,显示形式是"key":null,而直接new出来的就没有"key":null的
                gson= new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss").create();
            }
        }
        //无参的私有构造方法
        private GsonUtil() {
        }
    
        /**
         * 将对象转成json格式
         * 
         * @param object
         * @return String
         */
        public static String GsonString(Object object) {
            String gsonString = null;
            if (gson != null) {
                gsonString = gson.toJson(object);
            }
            return gsonString;
        }
    
        /**
         * 将json转成特定的cls的对象
         * 
         * @param gsonString
         * @param cls
         * @return
         */
        public static <T> T GsonToBean(String gsonString, Class<T> cls) {
            T t = null;
            if (gson != null) {
                //传入json对象和对象类型,将json转成对象
                t = gson.fromJson(gsonString, cls);
            }
            return t;
        }
    
        /**
         * json字符串转成list
         * 
         * @param gsonString
         * @param cls
         * @return
         */
        public static <T> List<T> GsonToList(String gsonString, Class<T> cls) {
            List<T> list = null;
            if (gson != null) {
                //根据泛型返回解析指定的类型,TypeToken<List<T>>{}.getType()获取返回类型
                list = gson.fromJson(gsonString, new TypeToken<List<T>>() {
                }.getType());
            }
            return list;
        }
    
        /**
         * json字符串转成list中有map的
         * 
         * @param gsonString
         * @return
         */
        public static <T> List<Map<String, T>> GsonToListMaps(String gsonString) {
            List<Map<String, T>> list = null;
            if (gson != null) {
                list = gson.fromJson(gsonString,
                        new TypeToken<List<Map<String, T>>>() {
                        }.getType());
            }
            return list;
        }
    
        /**
         * json字符串转成map的
         * 
         * @param gsonString
         * @return
         */
        public static <T> Map<String, T> GsonToMaps(String gsonString) {
            Map<String, T> map = null;
            if (gson != null) {
                map = gson.fromJson(gsonString, new TypeToken<Map<String, T>>() {
                }.getType());
            }
            return map;
        }
    }
    public class JacksonUtils {
    
        private final static ObjectMapper objectMapper = new ObjectMapper();
    
        private JacksonUtils() {
    
        }
    
        public static ObjectMapper getInstance() {
            return objectMapper;
        }
    
        /**
         * javaBean、列表数组转换为json字符串
         */
        public static String obj2json(Object obj) throws Exception {
            return objectMapper.writeValueAsString(obj);
        }
    
        /**
         * javaBean、列表数组转换为json字符串,忽略空值
         */
        public static String obj2jsonIgnoreNull(Object obj) throws Exception {
            ObjectMapper mapper = new ObjectMapper();
            mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
            return mapper.writeValueAsString(obj);
        }
    
        /**
         * json 转JavaBean
         */
    
        public static <T> T json2pojo(String jsonString, Class<T> clazz) throws Exception {
            objectMapper.configure(DeserializationFeature.ACCEPT_SINGLE_VALUE_AS_ARRAY, true);
            return objectMapper.readValue(jsonString, clazz);
        }
    
        /**
         * json字符串转换为map
         */
        public static <T> Map<String, Object> json2map(String jsonString) throws Exception {
            ObjectMapper mapper = new ObjectMapper();
            mapper.setSerializationInclusion(JsonInclude.Include.NON_NULL);
            return mapper.readValue(jsonString, Map.class);
        }
    
        /**
         * json字符串转换为map
         */
        public static <T> Map<String, T> json2map(String jsonString, Class<T> clazz) throws Exception {
            Map<String, Map<String, Object>> map = objectMapper.readValue(jsonString, new TypeReference<Map<String, T>>() {
            });
            Map<String, T> result = new HashMap<String, T>();
            for (Map.Entry<String, Map<String, Object>> entry : map.entrySet()) {
                result.put(entry.getKey(), map2pojo(entry.getValue(), clazz));
            }
            return result;
        }
    
        /**
         * 深度转换json成map
         *
         * @param json
         * @return
         */
        public static Map<String, Object> json2mapDeeply(String json) throws Exception {
            return json2MapRecursion(json, objectMapper);
        }
    
        /**
         * 把json解析成list,如果list内部的元素存在jsonString,继续解析
         *
         * @param json
         * @param mapper 解析工具
         * @return
         * @throws Exception
         */
        private static List<Object> json2ListRecursion(String json, ObjectMapper mapper) throws Exception {
            if (json == null) {
                return null;
            }
    
            List<Object> list = mapper.readValue(json, List.class);
    
            for (Object obj : list) {
                if (obj != null && obj instanceof String) {
                    String str = (String) obj;
                    if (str.startsWith("[")) {
                        obj = json2ListRecursion(str, mapper);
                    } else if (obj.toString().startsWith("{")) {
                        obj = json2MapRecursion(str, mapper);
                    }
                }
            }
    
            return list;
        }
    
        /**
         * 把json解析成map,如果map内部的value存在jsonString,继续解析
         *
         * @param json
         * @param mapper
         * @return
         * @throws Exception
         */
        private static Map<String, Object> json2MapRecursion(String json, ObjectMapper mapper) throws Exception {
            if (json == null) {
                return null;
            }
    
            Map<String, Object> map = mapper.readValue(json, Map.class);
    
            for (Map.Entry<String, Object> entry : map.entrySet()) {
                Object obj = entry.getValue();
                if (obj != null && obj instanceof String) {
                    String str = ((String) obj);
    
                    if (str.startsWith("[")) {
                        List<?> list = json2ListRecursion(str, mapper);
                        map.put(entry.getKey(), list);
                    } else if (str.startsWith("{")) {
                        Map<String, Object> mapRecursion = json2MapRecursion(str, mapper);
                        map.put(entry.getKey(), mapRecursion);
                    }
                }
            }
    
            return map;
        }
    
        /**
         * 与javaBean json数组字符串转换为列表
         */
        public static <T> List<T> json2list(String jsonArrayStr, Class<T> clazz) throws Exception {
    
            JavaType javaType = getCollectionType(ArrayList.class, clazz);
            List<T> lst = (List<T>) objectMapper.readValue(jsonArrayStr, javaType);
            return lst;
        }
    
    
        /**
         * 获取泛型的Collection Type
         *
         * @param collectionClass 泛型的Collection
         * @param elementClasses  元素类
         * @return JavaType Java类型
         * @since 1.0
         */
        public static JavaType getCollectionType(Class<?> collectionClass, Class<?>... elementClasses) {
            return objectMapper.getTypeFactory().constructParametricType(collectionClass, elementClasses);
        }
    
    
        /**
         * map  转JavaBean
         */
        public static <T> T map2pojo(Map map, Class<T> clazz) {
            return objectMapper.convertValue(map, clazz);
        }
    
        /**
         * map 转json
         *
         * @param map
         * @return
         */
        public static String mapToJson(Map map) {
            try {
                return objectMapper.writeValueAsString(map);
            } catch (Exception e) {
                e.printStackTrace();
            }
            return "";
        }
    
        /**
         * map  转JavaBean
         */
        public static <T> T obj2pojo(Object obj, Class<T> clazz) {
            return objectMapper.convertValue(obj, clazz);
        }
    }
    /**
     * fastjson工具类
     * @version:1.0.0
     */
    public class FastJsonUtils {
     
        private static final SerializeConfig config;
     
        static {
            config = new SerializeConfig();
            config.put(java.util.Date.class, new JSONLibDataFormatSerializer()); // 使用和json-lib兼容的日期输出格式
            config.put(java.sql.Date.class, new JSONLibDataFormatSerializer()); // 使用和json-lib兼容的日期输出格式
        }
     
        private static final SerializerFeature[] features = {SerializerFeature.WriteMapNullValue, // 输出空置字段
                SerializerFeature.WriteNullListAsEmpty, // list字段如果为null,输出为[],而不是null
                SerializerFeature.WriteNullNumberAsZero, // 数值字段如果为null,输出为0,而不是null
                SerializerFeature.WriteNullBooleanAsFalse, // Boolean字段如果为null,输出为false,而不是null
                SerializerFeature.WriteNullStringAsEmpty // 字符类型字段如果为null,输出为"",而不是null
        };
        
     
        public static String toJSONString(Object object) {
            return JSON.toJSONString(object, config, features);
        }
        
        public static String toJSONNoFeatures(Object object) {
            return JSON.toJSONString(object, config);
        }
        
     
     
        public static Object toBean(String text) {
            return JSON.parse(text);
        }
     
        public static <T> T toBean(String text, Class<T> clazz) {
            return JSON.parseObject(text, clazz);
        }
     
        // 转换为数组
        public static <T> Object[] toArray(String text) {
            return toArray(text, null);
        }
     
        // 转换为数组
        public static <T> Object[] toArray(String text, Class<T> clazz) {
            return JSON.parseArray(text, clazz).toArray();
        }
     
        // 转换为List
        public static <T> List<T> toList(String text, Class<T> clazz) {
            return JSON.parseArray(text, clazz);
        }
     
        /**
         * 将javabean转化为序列化的json字符串
         * @param keyvalue
         * @return
         */
        public static Object beanToJson(KeyValue keyvalue) {
            String textJson = JSON.toJSONString(keyvalue);
            Object objectJson  = JSON.parse(textJson);
            return objectJson;
        }
        
        /**
         * 将string转化为序列化的json字符串
         * @param keyvalue
         * @return
         */
        public static Object textToJson(String text) {
            Object objectJson  = JSON.parse(text);
            return objectJson;
        }
        
        /**
         * json字符串转化为map
         * @param s
         * @return
         */
        public static Map stringToCollect(String s) {
            Map m = JSONObject.parseObject(s);
            return m;
        }
        
        /**
         * 将map转化为string
         * @param m
         * @return
         */
        public static String collectToString(Map m) {
            String s = JSONObject.toJSONString(m);
            return s;
        }
        
    }
  • 相关阅读:
    docker容器日志收集方案(方案四,目前使用的方案)
    docker容器日志收集方案(方案三 filebeat+journald本地日志收集)
    docker容器日志收集方案(方案二 filebeat+syslog本地日志收集)
    docker容器日志收集方案(方案一 filebeat+本地日志收集)
    企业业务数据处理用“work”还是“MQ”
    spring cloud 实践之hystrix注意事项
    微服务架构理论-扩展立方体篇
    C# asp.net PhoneGap html5
    C# Where
    网站分布式开发简介
  • 原文地址:https://www.cnblogs.com/muxi0407/p/11948876.html
Copyright © 2011-2022 走看看