FastJson解析封裝

導(dǎo)包

implementation 'com.alibaba:fastjson:1.2.48'

方法

//FastKtx方法
toAny       :json 轉(zhuǎn)任意類
toMap       :json 轉(zhuǎn) Map
toList      : json 轉(zhuǎn) List
toJson      : 任意類轉(zhuǎn) json
//擴(kuò)展函數(shù)
toAny       :json 轉(zhuǎn)任意類
toMap       :json 轉(zhuǎn) Map
toList      : json 轉(zhuǎn) List
toJson      : 任意類轉(zhuǎn) json

注意事項(xiàng)

使用時(shí)涉及到泛型相關(guān),泛型 T 要轉(zhuǎn)的類必須要有無(wú)參構(gòu)造方法,一般 Java 默認(rèn)就有,如果使用 Kotlin 就需要注意了,設(shè)置默認(rèn)值是無(wú)效的,下面這種才有效:

class TestJ constructor(){
    var name: String? = null
    var isSuccess = false
}

封裝類

//json -> any
inline fun <reified T> String?.toAny() = FastKtx.toAny<T>(this)
fun <T> String?.toAny(tClass: Class<T>?) = FastKtx.toAny(this, tClass)

//json -> map
fun <T> String?.toMap() = FastKtx.toMap<Map<String, T>>(this)

//json -> list
inline fun <reified T> String?.toList() = FastKtx.toList<T>(this)
fun <T> String?.toList(tClass: Class<T>?) = FastKtx.toList(this, tClass)

//any -> json
fun Any?.toJson() = FastKtx.toJson(this)

object FastKtx {
    /**
     *json  ----->  T
     * @param T
     * @param json
     * @param tClass
     * @return
     */
    inline fun <reified T> toAny(json: String?): T? {
        return toAny(json, T::class.java)
    }

    fun <T> toAny(json: String?, tClass: Class<T>?): T? {
        if (json.isNullOrEmpty()) return null
        return try {
            JSON.parseObject(json, tClass)
        } catch (e: Exception) {
            null
        }
    }

    /**
     *json ---->  map
     * @param T
     * @param json
     * @return
     */
    fun <T> toMap(json: String?): Map<String, T>? {
        if (json.isNullOrEmpty()) return null
        try {
            return JSON.parseObject<Map<String, T>>(json, MutableMap::class.java)
        } catch (e: Exception) {
        }
        return null
    }

    /**
     *json ----->  list
     * @param T
     * @param json
     * @param tClass
     * @return
     */
    inline fun <reified T> toList(json: String?): List<T>? {
        return toList(json, T::class.java)
    }

    fun <T> toList(json: String?, tClass: Class<T>?): List<T>? {
        if (json.isNullOrEmpty()) return null
        return try {
            JSON.parseArray(json, tClass)
        } catch (e: Exception) {
            null
        }
    }

    /**
     *any -----> json
     * @param any
     * @return
     */
    fun toJson(any: Any?): String? {
        return try {
            JSON.toJSONString(any)
        } catch (e: Exception) {
            null
        }
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容