以下の内容はhttps://kuxumarin.hatenablog.com/entry/2019/11/06/043825より取得しました。


Gson で List<*> なクラスをJsonからパースするときにシュッと処理してくれる拡張関数を書いた。

ソリューションはあるけど、拡張関数でシュッと解決してくれるものがググっても出てこなかったので書きました。

ソースコード

inline fun <reified T> Gson.fromJson(
    json: String
): T {
    return this.fromJson(
        json,
        object : TypeToken<T>() {}.type
    )
}

一番シュッと呼ぶとき

これがほんと好きなんですが、既存の関数と同じインターフェイスでシュッと呼べるようになってます。

このケースでは返り値の型が指定してある場合は型を推定してくれるので型引数を指定する必要すらないです。

fun hoge(): Huga{
val json = ""
val gson = Gson()
return gson.fromJson(
   json
)
}

GsonにList なものを渡してJsonをパースしようとすると内部的にgenericsは型消去されてしまうので、ちょっと工夫してみた。

inline 展開される代わりに型消去されないで書けるのでそれを利用してみた。

ヒントをくれたまつだんぱーさん Thx.




以上の内容はhttps://kuxumarin.hatenablog.com/entry/2019/11/06/043825より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14