Kotlin使用Gson的JSONParser解析对象数组

我有这些类写在kotlin,位置,其余的是在Application.kt

@RealmClass open class Location( @PrimaryKey @SerializedName("id") var id: Int = 0, @SerializedName("city_name") var city_name: String? = null, @SerializedName("elevation") var elevation: Int = 0, @SerializedName("state_code") var state_code: String? = null, @SerializedName("state_name") var state_name: String? = null, @SerializedName("country_code") var country_code: String? = null, @SerializedName("country_name") var country_name: String? = null ):RealmObject() 

其余的:

 private fun loadStuff() { val inputStream = this.resources.openRawResource(R.raw.city_json) val jsonReader = JsonReader(InputStreamReader(inputStream, "UTF-8")) val gson = Gson() Realm.getDefaultInstance().executeTransactionAsync(Realm.Transaction { realm -> val weatherList = gson.fromJson<List>(jsonReader , Array::class.java).toList() //realm.insertOrUpdate(location) jsonReader.endArray() jsonReader.close() }, Realm.Transaction.OnSuccess { Log.d("TAG", "Success") }) } 

我一直得到例外:

 com.example.android.sunshine.data.Location[] cannot be cast to java.lang.Iterable 

我究竟做错了什么 ?

该对象看起来像这样:

 [ { "id":3040051, "city_name":"les Escaldes", "elevation":0, "state_code":"08", "state_name":"Parròquia d'Escaldes-Engordany", "country_code":"AD", "country_name":"Andorra" }, { "id":3041563, "city_name":"Andorra la Vella", "elevation":0, "state_code":"07", "state_name":"Parròquia d'Andorra la Vella", "country_code":"AD", "country_name":"Andorra" } ] 

2 Solutions collect form web for “Kotlin使用Gson的JSONParser解析对象数组”

这个:

 List 

是位置列表。 列表实现了Iterable。

这个:

 Array 

是一个位置数组。 数组不实现Iterable。

差异比这个大,但他是你错误的那个。

这足以交换列表与数组,并删除.toList()和它的工作就像魔术

  • 如何使用kotlin从模型类中检索数据?
  • 为什么这个Kotlin扩展失败Android Studio Lint检查?
  • 我们如何快速返回Kotlin函数中的多个值?
  • android studio 3.0.1和kotlin v1.2.10-release-Studio3.0-1有问题
  • FirebaseRecyclerAdapter - populateViewHolder不访问数据
  • 未连接到Internet时发生致命exception
  • 与标志的kotlin startactivity
  • 一次性将整个android项目移植到kotlin是否安全?
  • a.run是否和kotlin中的.run一样?
  • 适用于Android的Kotlin。 烤面包
  • 如何在Kotlin中编写扩展函数?
  • Kotlin language will be the best programming language for Android.