web-dev-qa-db-ja.com

KotlinはGsonを使用してjson文字列をオブジェクトのリストに変換します

JSON文字列からオブジェクトのリストに変換するためのコードを記述するKotlinに問題があります。

通常、Javaでは、次のようになります。

  Gson gson = new Gson();
    Type type = new TypeToken<List<SomeOjbect>>() {}.getType();
    List<SomeOjbect> measurements = gson.fromJson(json, type);
    return measurements;

ただし、Kotlinでは、次のようにしてみます。

   val gson = Gson()
    val type: Type = TypeToken<List<SomeOjbect>>{}.type
    val measurements : List<SomeOjbect> = gson.fromJson(text, type)
    return measurements 

IDE Android Studioは、TypeTokenが言っているエラーとして下線を引いています:

'<init>'にアクセスできません:public/package/in 'TypeToken'です

また、{}が言っているエラーとして下線を引きます:

型の不一致。必須:タイプ!見つかった:()→ユニット

Kotlinで機能させるための解決策はありますか?

9
K.Os

代わりにこれを試すことができます:

val objectList = gson.fromJson(json, Array<SomeObject>::class.Java).asList()

編集[2020年1月14日]:GSONを使用しないでください。プロジェクトのメンテナーの1人であるJake Whartonは、Moshi、Jackson、またはkotlinx.serializationの使用を提案しています。

15
Charlie Niekirk

これを試してください。Typeではなくオブジェクトを使用します。

measurements : List<SomeOjbect> = gson.fromJson(text, object : TypeToken<List<SomeOjbect>>() {}.type) 
4
Purushotham