基于fastjson封装的Java json工具类

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 
     * @return
     */
    public static  T parse(String json, Class cls) {
        return JSON.parseObject(json, cls);
    }

    /**
     * 将json转为Map
     *
     * @param json
     * @param 
     * @return
     */
    @SuppressWarnings("unchecked")
    public static  Map toMap(String json) {
        return (Map) JSONObject.parseObject(json);
    }

    /**
     * 将json转为指定类型的List
     *
     * @param json
     * @param cls
     * @param 
     * @return
     */
    public static  List toList(String json, Class cls) {
        return JSON.parseArray(json, cls);
    }

}

你可能感兴趣的:(基于fastjson封装的Java json工具类)