美文网首页经典好文
基于fastjson封装的Java json工具类

基于fastjson封装的Java json工具类

作者: 视频怪物 | 来源:发表于2019-11-26 14:24 被阅读0次

    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);
        }
    
    }
    

    相关文章

      网友评论

        本文标题:基于fastjson封装的Java json工具类

        本文链接:https://www.haomeiwen.com/subject/aziewctx.html