Java 改造需要BEGIN_数组,但在第1行第2列路径$KOTLIN处为BEGIN_对象
嘿,伙计们,我正试图从API获取数据。我可以使用这个json文件,这是可行的,但我不能让它工作 这是我的主要活动Java 改造需要BEGIN_数组,但在第1行第2列路径$KOTLIN处为BEGIN_对象,java,android,kotlin,retrofit,kotlin-coroutines,Java,Android,Kotlin,Retrofit,Kotlin Coroutines,嘿,伙计们,我正试图从API获取数据。我可以使用这个json文件,这是可行的,但我不能让它工作 这是我的主要活动 private fun loadData(){ val retrofit = Retrofit.Builder() .baseUrl("https://www.episodate.com/") .addConverterFactory(GsonConverterFactory.create())
private fun loadData(){
val retrofit = Retrofit.Builder()
.baseUrl("https://www.episodate.com/")
.addConverterFactory(GsonConverterFactory.create())
.build()
.create(MovieAPI::class.java)
CoroutineScope(Dispatchers.IO).launch {
val response = retrofit.getData()
if (response.isSuccessful){
response.body()?.let {
Moviemodel = ArrayList(it)
}
}
println(Moviemodel)
}
我的数据类
data class MovieModel(
val name: String
)
interface MovieAPI {
@GET("api/most-popular?page=1")
suspend fun getData(): Response<ArrayList<MovieModel>>
和API类
data class MovieModel(
val name: String
)
interface MovieAPI {
@GET("api/most-popular?page=1")
suspend fun getData(): Response<ArrayList<MovieModel>>
接口电影API{
@获取(“api/最流行?页面=1”)
suspend fun getData():响应此文件,我可以获取数据,但每当我尝试此应用程序时都会崩溃。请看一看,谢谢。
这里有一个类似的问题。你的模型应该是
data class Movie(
val page: Int,
val pages: Int,
val total: String,
val tv_shows: List<TvShow>
)
data class TvShow(
val country: String,
val end_date: Any,
val id: Int,
val image_thumbnail_path: String,
val name: String,
val network: String,
val permalink: String,
val start_date: String,
val status: String
)
如果要为模型使用不同的属性名称,应使用@SerializedName()
注释这些属性名称。有关更多信息,请参阅第一个是json列表,但第二个是包含列表的json对象,因此您不能直接解析到列表。您应该拥有包含列表对象的类。
例如:
data class MoviePageModel(
val total: Int,
val page: Int,
val tvShows: List<MovieModel>
)
数据类电影页面模型(
val总计:整数,
val page:Int,
val电视节目:列表
)
对于来自此URL的响应,如果您看到响应用矩形括号包装,即“[]”。这意味着响应将位于JSON数组中
对于来自此URL的响应,如果您看到响应用大括号包装,即“{}”。这意味着响应将位于JSON对象中
在下一行中,您已经提到响应将是MovieModel的ArrayList,但实际上,对于第一个URL,它将是一个JSON数组,对于第二个URL,它将是一个JSON对象。
suspend fun getData():响应
为了解决这个问题,您需要为每个URL定义单独的响应模型。您不能为不同的响应主体使用相同的模型类,为第二个API生成另一个模型类。我做到了。我也尝试了json插件中的kotlin数据类文件,我也尝试了使用该数据类工作的另一个json文件。但是有些json文件导致崩溃。我找不到它。我做了它,我下一步该做什么我正在尝试一些东西,但仍然崩溃。我可以解决json数组,但我不能处理json对象我不明白我需要什么。我正在创建一个包含tvShows:List对象的类,但我不知道下一步需要做什么。它工作了,但我可以问一个问题吗?为什么e使用响应而不是Response@Tunahan正如Sushant Hande所提到的,因为您的API响应以大括号“{}”开头,它是一个JSON对象,而不是JSON数组。因此,它不是列表,而是单个对象。请再次检查他的答案,也请检查