我有关于调用对象的问题,我认为问题是因为嵌套的json我用pojo转换为gson,但我不知道我必须改变什么代码来解决这个问题
我在启动应用程序时收到此消息
E/主要活动:需要开始_ARRAY,但在路径$的第1行第2列却是BEGIN_OBJECT
你能帮我弄清楚我必须改变什么,这样问题“期望开始_OBJECT,但是是BEGIN_ARRAY”就可以解决了吗?
这是我的原始json json
这是我的数据类
data class JadwalItem(
@field:SerializedName("jadwal")
val jadwal: Jadwal? = null,
@field:SerializedName("query")
val query: Query? = null,
@field:SerializedName("status")
val status: String? = null
)
data class Data(
@field:SerializedName("imsak")
val imsak: String? = null,
@field:SerializedName("isya")
val isya: String? = null,
@field:SerializedName("dzuhur")
val dzuhur: String? = null,
@field:SerializedName("dhuha")
val dhuha: String? = null,
@field:SerializedName("subuh")
val subuh: String? = null,
@field:SerializedName("terbit")
val terbit: String? = null,
@field:SerializedName("ashar")
val ashar: String? = null,
@field:SerializedName("tanggal")
val tanggal: String? = null,
@field:SerializedName("maghrib")
val maghrib: String? = null
)
data class Jadwal(
@field:SerializedName("data")
val data: Data? = null,
@field:SerializedName("status")
val status: String? = null
)
data class Query(
@field:SerializedName("kota")
val kota: String? = null,
@field:SerializedName("format")
val format: String? = null,
@field:SerializedName("tanggal")
val tanggal: String? = null
)
这是我服务
@GET("tanggal/{year}-{monthNumber}-{day}")
fun getPosts(
@Path("year") year: String,
@Path("monthNumber") monthNumber: String,
@Path("day") day: String
): Call<Posts>
这是我的帖子.kt
class Posts : ArrayList<Data>()
这是我在主活动中调用服务
val dateNow = Calendar.getInstance().time
val day = DateFormat.format("dd", dateNow) as String // 20
val monthNumber = DateFormat.format("MM", dateNow) as String // 06
val year = DateFormat.format("yyyy", dateNow) as String // 2013
val retrofit = Retrofit.Builder()
.baseUrl("https://api.banghasan.com/sholat/format/json/jadwal/kota/663/")
.addConverterFactory(GsonConverterFactory.create())
.build()
val service: Service = retrofit.create(Service::class.java)
service.getPosts(year,monthNumber,day).enqueue(object : Callback<Posts> {
override fun onResponse(call: Call<Posts>, response: Response<Posts>) {
val body = response.body()
actionBar?.title = "Latihan"
}
override fun onFailure(call: Call<Posts>, t: Throwable) {
Log.e("MainActivity", t.message.toString())
}
})
1条答案
按热度按时间uttx8gqw1#
JSON响应是一个“Post”对象数组,对吗?当“getPosts”方法返回“Posts”对象时,您需要的是一个表示“Post”对象的JSON,而不是一个数组。
更改您的:
至
在这里,您将告诉代码,您希望从API获得“Post”响应,而“Post”只不过是一个“Data”数组
创建新类
而getPosts方法将返回CallListOfPost