如何将下面的json数据解析到kotlin

  • 本文关键字:数据 kotlin json kotlin
  • 更新时间 :
  • 英文 :


大家好,我已经能够将名称/实用OnDate属性解析为kotlin数据类但我无法正确解析exercices属性,您可以查看屏幕截图以获取我得到的输出。你知道我该做什么吗?(编辑:我正在回收器中显示数据查看)

[
{
"name": "Introductory Session",
"practicedOnDate": "2016-05-08T14:48:28.257Z",
"exercises": [
{
"exerciseId": "0",
"name": "Quarters flat minor C",
"practicedAtBpm": 40
},
{
"exerciseId": "1",
"name": "Triplets flat major A",
"practicedAtBpm": 40
},
{
"exerciseId": "2",
"name": "Eigths flat minor A",
"practicedAtBpm": 40
},
{
"exerciseId": "3",
"name": "Eigths sharp minor C",
"practicedAtBpm": 40
}
]
}

这是我的getSessions函数:

private fun getSessions() {
val retrofitBuilder = Retrofit.Builder().addConverterFactory(GsonConverterFactory.create())
.baseUrl(BASE_URL)
.build()
.create(ApiInterface::class.java)
val retrofitData = retrofitBuilder.getData()
retrofitData.enqueue(object : Callback<List<SessionsItem>?> {
override fun onResponse(
call: Call<List<SessionsItem>?>,
response: Response<List<SessionsItem>?>
) {
val responseBody = response.body()!! //NOT NULL
myAdapter = sessionAdapter(baseContext,responseBody)
myAdapter.notifyDataSetChanged()
recyclerview.adapter = myAdapter

}
override fun onFailure(call: Call<List<SessionsItem>?>, t: Throwable) {
d("MainActivity","onFailure"+t.message)
}
})
}

会话适配器:

class sessionAdapter (val context:Context,val sessionList:List<SessionsItem>):RecyclerView.Adapter<sessionAdapter.ViewHolder>(){
class ViewHolder(itemView: View):RecyclerView.ViewHolder(itemView) {
var sessionName:TextView
var practicedOnDate:TextView
var exercises:TextView
init {
sessionName = itemView.sessionName
practicedOnDate = itemView.practicedOnDate
exercises = itemView.exercices
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
var itemView = LayoutInflater.from(context).inflate(R.layout.row_items,parent,false)
return ViewHolder(itemView)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.sessionName.text = sessionList[position].name
holder.practicedOnDate.text = sessionList[position].practicedOnDate
println(sessionList[position].exercises.get(0))
holder.exercises.text =sessionList[position].exercises.toString()
}
override fun getItemCount(): Int {
return sessionList.size
}}

我的会话数据类:

data class SessionsItem(
val exercises: List<Exercise>,
val name: String,
val practicedOnDate: String)

我无法使用的exercise数据类:

data class Exercise(
val exerciseId: String,
val name: String,
val practicedAtBpm: Int)

这是我的输出:屏幕截图

我只想得到练习的名称和实际的AtBpm属性,但我得到了的所有内容

覆盖下面中Exercise数据类中的toString()

data class Exercise(
val exerciseId: String,
val name: String,
val practicedAtBpm: Int){
override fun toString(): String = "name=$name, practicedAtBpm=$practicedAtBpm"
}

最新更新