Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/350.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 改造需要BEGIN_数组,但在第1行第2列路径$KOTLIN处为BEGIN_对象_Java_Android_Kotlin_Retrofit_Kotlin Coroutines - Fatal编程技术网

Java 改造需要BEGIN_数组,但在第1行第2列路径$KOTLIN处为BEGIN_对象

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())

嘿,伙计们,我正试图从API获取数据。我可以使用这个json文件,这是可行的,但我不能让它工作

这是我的主要活动

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数组。因此,它不是列表,而是单个对象。请再次检查他的答案,也请检查