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で機能させるための解決策はありますか?
代わりにこれを試すことができます:
val objectList = gson.fromJson(json, Array<SomeObject>::class.Java).asList()
編集[2020年1月14日]:GSONを使用しないでください。プロジェクトのメンテナーの1人であるJake Whartonは、Moshi、Jackson、またはkotlinx.serializationの使用を提案しています。
これを試してください。Typeではなくオブジェクトを使用します。
measurements : List<SomeOjbect> = gson.fromJson(text, object : TypeToken<List<SomeOjbect>>() {}.type)