Ожидаемый объект BEGIN_OBJECT, но был СТРОКОЙ в строке 1, столбец 1, путь $ при использовании Retrofit2, который возвращает ошибку

#android #api #kotlin #retrofit #retrofit2

Вопрос:

Я получаю эту ошибку ** Ожидаемый объект BEGIN_OBJECT, но был СТРОКОЙ в строке 1, столбец 1, путь $**

градации ниже, которые я использовал для модернизации

 
 implementation 'com.squareup.retrofit2:retrofit:2.6.0'
    implementation 'com.google.code.gson:gson:2.8.6'
    implementation 'com.squareup.retrofit2:converter-gson:2.5.0'
    implementation 'com.squareup.okhttp3:logging-interceptor:3.12.0'

 

Класс модернизации

 class RetrofitClient private constructor() {
    val myApi: Api

    companion object {
        @get:Synchronized
        var instance: RetrofitClient? = null
            get() {
                if (field == null) {
                    field = RetrofitClient()
                }
                return field
            }
            private set
    }

    init {

        val gson = GsonBuilder()
                .setLenient()
                .create()
        val interceptor = HttpLoggingInterceptor()
        interceptor.level = HttpLoggingInterceptor.Level.BODY
        val client : OkHttpClient = OkHttpClient.Builder().addInterceptor(interceptor).build()

        val retrofit: Retrofit = Retrofit.Builder().baseUrl("http://ctyf.co.in/api/")
                .client(client)
            .addConverterFactory(GsonConverterFactory.create(gson))
            .build()
        myApi = retrofit.create(Api::class.java)

    }
}
 

Интерфейс Api

 public interface Api {

    @Headers("Content-Type: application/json")
    @GET("companyvehiclelatestinfo?token=F934A0C439/")

    fun getLatLngs(): Call<ResponseLoc?>?
}
 

класс данных

 data class ResponseLoc(
    val Vehicle: List<Vehicle>
)
 

модель данных

 data class Vehicle(
    val Angle: String,
    val Date: String,
    val Ignition: String,
    val Imei: String,
    val Lat: String,
    val Location: String,
    val Long: String,
    val Speed: String,
    val Tempr: String,
    val VehicleNo: String
)
 

наконец-то звоню сюда

 private fun getLatLngs() {

        val call: Call<ResponseLoc?>? = RetrofitClient.instance!!.myApi.getLatLngs()
        call!!.enqueue(object : Callback<ResponseLoc?> {

              override fun onResponse(call: Call<ResponseLoc?>, response: Response<ResponseLoc?>) {
                val responseLoc: List<ResponseLoc> = response.body() as List<ResponseLoc>

                //Creating an String array for the ListView
                val data = arrayOfNulls<String>(responseLoc.size)

                for (i in responseLoc.indices) {
                    data[i] = responseLoc[i].Vehicle.toString()
                    Log.d("apiii",  data[i].toString())
                }

            }

            override fun onFailure(call: Call<ResponseLoc?>, t: Throwable) {

                Log.d("apii",  t.message.toString())
            }

        })
    }
 

Значения JSON

 {"Vehicle":[{"VehicleNo":"Test","Imei":"354019","Location":"Tamil Nadu-India","Date":"2021-03-17 19:27:12.000","Tempr":"0","Ignition":"","Lat":"13.11","Long":"80.282","Speed":"0","Angle":"0"}]}
 

Я перепробовал много стеков, но ни один из них не помог

Есть ли какие-либо другие доступные способы, кроме модернизации ???

кто — нибудь, пожалуйста, помогите мне получить результаты api

Я перепробовал много стеков, но ни один из них не помог

Есть ли какие-либо другие доступные способы, кроме модернизации ???

кто — нибудь, пожалуйста, помогите мне получить результаты api

Комментарии:

1. одной из переменных, которые вы определили в своем классе данных, является строка, но она ожидает JSONObject

2. В вашем json есть проблема. Справа: {«Транспортное средство»:[{«Транспортное средство»:»Тест»,»Imei»:»354019″,»Местоположение»:»Тамилнад-Индия»,»Дата»:»2021-03-17 19:27:12.000″,»Темп»:»0″,»Зажигание»:»»,»Широта»:»13.11″,»Длина»:»80.282″,»Скорость»:»0″,»Угол»:»0″}]}

3. @iamanbansal Tje JSON имеет правильные значения, но я пропустил значения в json, теперь я исправил, помогите мне получить результаты

4. можете ли вы поделиться json, который вы ожидаете от сервера?

5. Я уже добавил