美文网首页经典好文
基于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