Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.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
Android java.lang.IllegalStateException:应为BEGIN_对象,但为BEGIN_数组Kotlin_Android_Kotlin_Retrofit2 - Fatal编程技术网

Android java.lang.IllegalStateException:应为BEGIN_对象,但为BEGIN_数组Kotlin

Android java.lang.IllegalStateException:应为BEGIN_对象,但为BEGIN_数组Kotlin,android,kotlin,retrofit2,Android,Kotlin,Retrofit2,我正在尝试使用改型在我的应用程序上实现登录,但是我一直收到这个错误,不确定出了什么问题,java.lang.IllegalStateException:预期的是BEGIN\u对象,但它是BEGIN\u数组 这是邮递员的回复 { "isSuccessful": true, "message": "successful", "user": [ { "id": 1, "name": "Raymond Giton

我正在尝试使用改型在我的应用程序上实现登录,但是我一直收到这个错误,不确定出了什么问题,java.lang.IllegalStateException:预期的是BEGIN\u对象,但它是BEGIN\u数组

这是邮递员的回复

  {
    "isSuccessful": true,
    "message": "successful",
    "user": [
        {
            "id": 1,
            "name": "Raymond Gitonga",
            "email": "xyz@gmail.com",
            "phone": "07222XXXXX"
        }
    ]
}
我有两个模型类:用户模型类

   data class User(
    val id:Int,
    val name: String,
    val email:String,
    val phone:String
)
和登录响应类

  data class LoginResponse(
    val isSuccessful:Boolean,
    val message: String,
    val user:User
)
我的改装对象

 object RetrofitClient {

    private const val BASE_URL = "http://10.0.2.2:7000/"

    val instance: RetrofitApi by lazy {
        val retrofit = Retrofit.Builder()
            .baseUrl(BASE_URL)
            .addConverterFactory(GsonConverterFactory.create())
            .build()

    retrofit.create(RetrofitApi::class.java)
    }
}
改装空气污染指数

  interface RetrofitApi {
    @FormUrlEncoded
    @POST("users/login")
    fun userLogin(
        @Field("email") email:String,
        @Field("password")password:String
    ):Call<LoginResponse>
}
接口API{
@FormUrlEncoded
@POST(“用户/登录”)
有趣的用户登录(
@字段(“电子邮件”)电子邮件:字符串,
@字段(“密码”)密码:字符串
):呼叫
}
和我的登录类

        login_btn.setOnClickListener {
        val email = email_login.text.toString().trim()
        val password = password_login.text.toString().trim()

        if (email.isEmpty()){
            email_login.error = "Enter email"
            return@setOnClickListener
        }

        if (password.isEmpty()){
            password_login.error = "Enter password"
            return@setOnClickListener
        }

        RetrofitClient.instance.userLogin(email, password)
            .enqueue(object : Callback<LoginResponse> {
                override fun onFailure(call: Call<LoginResponse>, t: Throwable) {
                    Toast.makeText(applicationContext, t.message, Toast.LENGTH_LONG).show()
                    println("YESSSSSSSSSSSSS>>>>>>"+t.message)
                }

                override fun onResponse(call: Call<LoginResponse>, response: Response<LoginResponse>) {
                    if (response.body()?.isSuccessful!!){

                        SharedPreferenceManager.getInstance(applicationContext).saveUser(response.body()?.user!!)

                        val intent = Intent(applicationContext, MainActivity::class.java)
                        intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK

                        startActivity(intent)

                    }else{
                        Toast.makeText(applicationContext, response.body()?.message, Toast.LENGTH_LONG).show()
                    }
                }

            })
    }
login\u btn.setOnClickListener{
val email=email\u login.text.toString().trim()
val password=password\u login.text.toString().trim()
if(email.isEmpty()){
email\u login.error=“输入电子邮件”
return@setOnClickListener
}
if(password.isEmpty()){
密码\u login.error=“输入密码”
return@setOnClickListener
}
修改client.instance.userLogin(电子邮件、密码)
.enqueue(对象:回调{
覆盖失效时的乐趣(调用:调用,t:可丢弃){
Toast.makeText(applicationContext,t.message,Toast.LENGTH\u LONG.show())
println(“yesssss>>>>>”+t.message)
}
覆盖fun onResponse(调用:调用,响应:响应){
if(response.body()?.issusccessful!!){
SharedReferenceManager.getInstance(applicationContext).saveUser(response.body()?.user!!)
val intent=intent(applicationContext,MainActivity::class.java)
intent.flags=intent.FLAG\u活动\u新建任务或intent.FLAG\u活动\u清除任务
星触觉(意图)
}否则{
Toast.makeText(applicationContext,response.body()?.message,Toast.LENGTH\u LONG.show())
}
}
})
}
JSON显示的是用户列表,而不是单个用户。将上述内容替换为:

val user: List<User>
val用户:列表
JSON显示的是用户列表,而不是单个用户。将上述内容替换为:

val user: List<User>
val用户:列表