Can't access the data in JSON with Android Retrofit

Viewed 343

According to the videos I watched from the internet, I am trying to get the data in Json. I can access the Json files in the videos, but I cannot access my own Json file. This may be because it contains some complicated content. Here is the CryptoModel class:

data class CryptoModel ( var hash: String, var price: String)

Here is the CryptoApi interface:

  interface CryptoAPI {

    @GET("otel.json")
    fun getData(): Call<List<CryptoModel>>
}

Here is the MainActivity:

    class MainActivity : AppCompatActivity() {

    private val BASE_URL = "http://www.ipucubilisim.com.tr/"
    private var cryptoModels: ArrayList<CryptoModel>? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        loadData()
    }

    private fun loadData() {

        val retrofit = Retrofit.Builder()
                .baseUrl(BASE_URL)
                .addConverterFactory(GsonConverterFactory.create())
                .build()

        val service = retrofit.create(CryptoAPI::class.java)
        val call = service.getData()

        call.enqueue(object: Callback<List<CryptoModel>> {
            override fun onFailure(call: Call<List<CryptoModel>>, t: Throwable) {
                t.printStackTrace()
            }

            override fun onResponse
                    (call: Call<List<CryptoModel>>,
                     response: Response<List<CryptoModel>>
                    ) {
                if (response.isSuccessful)
                    response.body()?.let {
                        cryptoModels = ArrayList(it)

                        for (cryptoModel : CryptoModel in cryptoModels!!) {
                            println(cryptoModel.hash)
                            println(cryptoModel.price)
                        }
                    }
            }
        })
        }
}

Here is the Json link: http://www.ipucubilisim.com.tr/otel.json Where am I making mistakes? What should I change? I would be glad if you help Here is the Error (Logcat):

    2020-06-04 12:18:10.223 10276-10276/? I/.retrofitkotli: Not late-enabling -Xcheck:jni (already on)
2020-06-04 12:18:10.296 10276-10276/? E/.retrofitkotli: Unknown bits set in runtime_flags: 0x8000
2020-06-04 12:18:10.297 10276-10276/? W/.retrofitkotli: Unexpected CPU variant for X86 using defaults: x86
2020-06-04 12:18:10.538 10276-10330/com.berkancalikoglu.retrofitkotlin D/libEGL: Emulator has host GPU support, qemu.gles is set to 1.
2020-06-04 12:18:10.520 10276-10276/com.berkancalikoglu.retrofitkotlin W/RenderThread: type=1400 audit(0.0:53): avc: denied { write } for name="property_service" dev="tmpfs" ino=6905 scontext=u:r:untrusted_app:s0:c135,c256,c512,c768 tcontext=u:object_r:property_socket:s0 tclass=sock_file permissive=0
2020-06-04 12:18:10.539 10276-10330/com.berkancalikoglu.retrofitkotlin W/libc: Unable to set property "qemu.gles" to "1": connection failed; errno=13 (Permission denied)
2020-06-04 12:18:10.558 10276-10330/com.berkancalikoglu.retrofitkotlin D/libEGL: loaded /vendor/lib/egl/libEGL_emulation.so
2020-06-04 12:18:10.560 10276-10330/com.berkancalikoglu.retrofitkotlin D/libEGL: loaded /vendor/lib/egl/libGLESv1_CM_emulation.so
2020-06-04 12:18:10.564 10276-10330/com.berkancalikoglu.retrofitkotlin D/libEGL: loaded /vendor/lib/egl/libGLESv2_emulation.so
2020-06-04 12:18:10.655 10276-10276/com.berkancalikoglu.retrofitkotlin W/.retrofitkotli: Accessing hidden method Landroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z (greylist, reflection, allowed)
2020-06-04 12:18:10.655 10276-10276/com.berkancalikoglu.retrofitkotlin W/.retrofitkotli: Accessing hidden method Landroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V (greylist, reflection, allowed)
2020-06-04 12:18:10.726 10276-10276/com.berkancalikoglu.retrofitkotlin D/NetworkSecurityConfig: No Network Security Config specified, using platform default
2020-06-04 12:18:10.730 10276-10276/com.berkancalikoglu.retrofitkotlin W/.retrofitkotli: Accessing hidden method Ldalvik/system/CloseGuard;->get()Ldalvik/system/CloseGuard; (greylist,core-platform-api, reflection, allowed)
2020-06-04 12:18:10.730 10276-10276/com.berkancalikoglu.retrofitkotlin W/.retrofitkotli: Accessing hidden method Ldalvik/system/CloseGuard;->open(Ljava/lang/String;)V (greylist,core-platform-api, reflection, allowed)
2020-06-04 12:18:10.730 10276-10276/com.berkancalikoglu.retrofitkotlin W/.retrofitkotli: Accessing hidden method Ldalvik/system/CloseGuard;->warnIfOpen()V (greylist,core-platform-api, reflection, allowed)
2020-06-04 12:18:10.742 10276-10276/com.berkancalikoglu.retrofitkotlin W/.retrofitkotli: Accessing hidden field Lsun/misc/Unsafe;->theUnsafe:Lsun/misc/Unsafe; (greylist, reflection, allowed)
2020-06-04 12:18:10.742 10276-10276/com.berkancalikoglu.retrofitkotlin W/.retrofitkotli: Accessing hidden method Lsun/misc/Unsafe;->allocateInstance(Ljava/lang/Class;)Ljava/lang/Object; (greylist, reflection, allowed)
2020-06-04 12:18:10.800 10276-10328/com.berkancalikoglu.retrofitkotlin D/HostConnection: HostConnection::get() New Host Connection established 0xd7a7de60, tid 10328
2020-06-04 12:18:10.805 10276-10328/com.berkancalikoglu.retrofitkotlin D/HostConnection: HostComposition ext ANDROID_EMU_CHECKSUM_HELPER_v1 ANDROID_EMU_dma_v1 ANDROID_EMU_direct_mem ANDROID_EMU_host_composition_v1 ANDROID_EMU_host_composition_v2 ANDROID_EMU_vulkan ANDROID_EMU_deferred_vulkan_commands ANDROID_EMU_vulkan_null_optional_strings ANDROID_EMU_vulkan_create_resources_with_requirements ANDROID_EMU_YUV420_888_to_NV21 ANDROID_EMU_YUV_Cache ANDROID_EMU_async_unmap_buffer ANDROID_EMU_vulkan_free_memory_sync GL_OES_vertex_array_object GL_KHR_texture_compression_astc_ldr ANDROID_EMU_gles_max_version_2 
2020-06-04 12:18:10.807 10276-10328/com.berkancalikoglu.retrofitkotlin W/OpenGLRenderer: Failed to choose config with EGL_SWAP_BEHAVIOR_PRESERVED, retrying without...
2020-06-04 12:18:10.812 10276-10328/com.berkancalikoglu.retrofitkotlin D/eglCodecCommon: setVertexArrayObject: set vao to 0 (0) 0 0
2020-06-04 12:18:10.812 10276-10328/com.berkancalikoglu.retrofitkotlin D/EGL_emulation: eglCreateContext: 0xe31ad480: maj 2 min 0 rcv 2
2020-06-04 12:18:10.843 10276-10328/com.berkancalikoglu.retrofitkotlin D/EGL_emulation: eglMakeCurrent: 0xe31ad480: ver 2 0 (tinfo 0xd7ac1230)
2020-06-04 12:18:10.854 10276-10328/com.berkancalikoglu.retrofitkotlin W/Gralloc3: mapper 3.x is not supported
2020-06-04 12:18:10.855 10276-10328/com.berkancalikoglu.retrofitkotlin D/HostConnection: createUnique: call
2020-06-04 12:18:10.855 10276-10328/com.berkancalikoglu.retrofitkotlin D/HostConnection: HostConnection::get() New Host Connection established 0xd7a7f6c0, tid 10328
2020-06-04 12:18:10.862 10276-10328/com.berkancalikoglu.retrofitkotlin D/HostConnection: HostComposition ext ANDROID_EMU_CHECKSUM_HELPER_v1 ANDROID_EMU_dma_v1 ANDROID_EMU_direct_mem ANDROID_EMU_host_composition_v1 ANDROID_EMU_host_composition_v2 ANDROID_EMU_vulkan ANDROID_EMU_deferred_vulkan_commands ANDROID_EMU_vulkan_null_optional_strings ANDROID_EMU_vulkan_create_resources_with_requirements ANDROID_EMU_YUV420_888_to_NV21 ANDROID_EMU_YUV_Cache ANDROID_EMU_async_unmap_buffer ANDROID_EMU_vulkan_free_memory_sync GL_OES_vertex_array_object GL_KHR_texture_compression_astc_ldr ANDROID_EMU_gles_max_version_2 
2020-06-04 12:18:10.862 10276-10328/com.berkancalikoglu.retrofitkotlin D/eglCodecCommon: allocate: Ask for block of size 0x1000
2020-06-04 12:18:10.862 10276-10328/com.berkancalikoglu.retrofitkotlin D/eglCodecCommon: allocate: ioctl allocate returned offset 0x3ff807000 size 0x2000
2020-06-04 12:18:10.878 10276-10328/com.berkancalikoglu.retrofitkotlin D/EGL_emulation: eglMakeCurrent: 0xe31ad480: ver 2 0 (tinfo 0xd7ac1230)
2020-06-04 12:18:10.879 10276-10328/com.berkancalikoglu.retrofitkotlin D/eglCodecCommon: setVertexArrayObject: set vao to 0 (0) 1 0
2020-06-04 12:18:10.934 10276-10276/com.berkancalikoglu.retrofitkotlin W/System.err: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $
2020-06-04 12:18:10.934 10276-10276/com.berkancalikoglu.retrofitkotlin W/System.err:     at com.google.gson.stream.JsonReader.beginArray(JsonReader.java:350)
2020-06-04 12:18:10.934 10276-10276/com.berkancalikoglu.retrofitkotlin W/System.err:     at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:80)
2020-06-04 12:18:10.934 10276-10276/com.berkancalikoglu.retrofitkotlin W/System.err:     at com.google.gson.internal.bind.CollectionTypeAdapterFactory$Adapter.read(CollectionTypeAdapterFactory.java:61)
2020-06-04 12:18:10.934 10276-10276/com.berkancalikoglu.retrofitkotlin W/System.err:     at retrofit2.converter.gson.GsonResponseBodyConverter.convert(GsonResponseBodyConverter.java:39)
2020-06-04 12:18:10.935 10276-10276/com.berkancalikoglu.retrofitkotlin W/System.err:     at retrofit2.converter.gson.GsonResponseBodyConverter.convert(GsonResponseBodyConverter.java:27)
2020-06-04 12:18:10.935 10276-10276/com.berkancalikoglu.retrofitkotlin W/System.err:     at retrofit2.OkHttpCall.parseResponse(OkHttpCall.java:225)
2020-06-04 12:18:10.935 10276-10276/com.berkancalikoglu.retrofitkotlin W/System.err:     at retrofit2.OkHttpCall$1.onResponse(OkHttpCall.java:121)
2020-06-04 12:18:10.935 10276-10276/com.berkancalikoglu.retrofitkotlin W/System.err:     at okhttp3.RealCall$AsyncCall.execute(RealCall.java:206)
2020-06-04 12:18:10.935 10276-10276/com.berkancalikoglu.retrofitkotlin W/System.err:     at okhttp3.internal.NamedRunnable.run(NamedRunnable.java:32)
2020-06-04 12:18:10.935 10276-10276/com.berkancalikoglu.retrofitkotlin W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
2020-06-04 12:18:10.935 10276-10276/com.berkancalikoglu.retrofitkotlin W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
2020-06-04 12:18:10.935 10276-10276/com.berkancalikoglu.retrofitkotlin W/System.err:     at java.lang.Thread.run(Thread.java:919)

Here is the an example of how normally working with other people Json file (Logcat):

2020-06-04 12:44:51.463 10483-10483/com.berkancalikoglu.retrofitkotlin I/System.out: XVG
2020-06-04 12:44:51.463 10483-10483/com.berkancalikoglu.retrofitkotlin I/System.out: 0.00448927
2020-06-04 12:44:51.463 10483-10483/com.berkancalikoglu.retrofitkotlin I/System.out: XVP
2020-06-04 12:44:51.463 10483-10483/com.berkancalikoglu.retrofitkotlin I/System.out: 0.00391901
2020-06-04 12:44:51.463 10483-10483/com.berkancalikoglu.retrofitkotlin I/System.out: XWP
2020-06-04 12:44:51.463 10483-10483/com.berkancalikoglu.retrofitkotlin I/System.out: 0.03527198
2020-06-04 12:44:51.463 10483-10483/com.berkancalikoglu.retrofitkotlin I/System.out: XYO
2020-06-04 12:44:51.463 10483-10483/com.berkancalikoglu.retrofitkotlin I/System.out: 0.00030497
2020-06-04 12:44:51.464 10483-10483/com.berkancalikoglu.retrofitkotlin I/System.out: XZC
2020-06-04 12:44:51.464 10483-10483/com.berkancalikoglu.retrofitkotlin I/System.out: 4.75104317
2020-06-04 12:44:51.464 10483-10483/com.berkancalikoglu.retrofitkotlin I/System.out: YAP
2020-06-04 12:44:51.464 10483-10483/com.berkancalikoglu.retrofitkotlin I/System.out: 0.05905905
2020-06-04 12:44:51.464 10483-10483/com.berkancalikoglu.retrofitkotlin I/System.out: YCC
2020-06-04 12:44:51.464 10483-10483/com.berkancalikoglu.retrofitkotlin I/System.out: 0.00576147
2020-06-04 12:44:51.464 10483-10483/com.berkancalikoglu.retrofitkotlin I/System.out: YCE
2020-06-04 12:44:51.464 10483-10483/com.berkancalikoglu.retrofitkotlin I/System.out: 0.00047793
2020-06-04 12:44:51.464 10483-10483/com.berkancalikoglu.retrofitkotlin I/System.out: YEC
2020-06-04 12:44:51.464 10483-10483/com.berkancalikoglu.retrofitkotlin I/System.out: 0.07599428
2020-06-04 12:44:51.464 10483-10483/com.berkancalikoglu.retrofitkotlin I/System.out: YEE
2020-06-04 12:44:51.464 10483-10483/com.berkancalikoglu.retrofitkotlin I/System.out: 0.00095374
2020-06-04 12:44:51.464 10483-10483/com.berkancalikoglu.retrofitkotlin I/System.out: YEED
2020-06-04 12:44:51.464 10483-10483/com.berkancalikoglu.retrofitkotlin I/System.out: 0.00018321
2020-06-04 12:44:51.464 10483-10483/com.berkancalikoglu.retrofitkotlin I/System.out: YLC
2020-06-04 12:44:51.464 10483-10483/com.berkancalikoglu.retrofitkotlin I/System.out: 0.00049317
2020-06-04 12:44:51.464 10483-10483/com.berkancalikoglu.retrofitkotlin I/System.out: YLD
2020-06-04 12:44:51.464 10483-10483/com.berkancalikoglu.retrofitkotlin I/System.out: 0.00632366
2020-06-04 12:44:51.464 10483-10483/com.berkancalikoglu.retrofitkotlin I/System.out: YNDXCX
2020-06-04 12:44:51.464 10483-10483/com.berkancalikoglu.retrofitkotlin I/System.out: 41.45000000
2020-06-04 12:44:51.464 10483-10483/com.berkancalikoglu.retrofitkotlin I/System.out: YO
2020-06-04 12:44:51.464 10483-10483/com.berkancalikoglu.retrofitkotlin I/System.out: 963.95769068
2020-06-04 12:44:51.464 10483-10483/com.berkancalikoglu.retrofitkotlin I/System.out: YOC
2020-06-04 12:44:51.464 10483-10483/com.berkancalikoglu.retrofitkotlin I/System.out: 0.00040861
2020-06-04 12:44:51.464 10483-10483/com.berkancalikoglu.retrofitkotlin I/System.out: YOU
2020-06-04 12:44:51.464 10483-10483/com.berkancalikoglu.retrofitkotlin I/System.out: 0.01514782
2020-06-04 12:44:51.464 10483-10483/com.berkancalikoglu.retrofitkotlin I/System.out: YOUC
2020-06-04 12:44:51.464 10483-10483/com.berkancalikoglu.retrofitkotlin I/System.out: 0.11189408
2020-06-04 12:44:51.464 10483-10483/com.berkancalikoglu.retrofitkotlin I/System.out: YOYOW
2020-06-04 12:44:51.464 10483-10483/com.berkancalikoglu.retrofitkotlin I/System.out: 0.00947287
2020-06-04 12:44:51.464 10483-10483/com.berkancalikoglu.retrofitkotlin I/System.out: YTN
2020-06-04 12:44:51.464 10483-10483/com.berkancalikoglu.retrofitkotlin I/System.out: 0.00048801
2020-06-04 12:44:51.464 10483-10483/com.berkancalikoglu.retrofitkotlin I/System.out: YUN
2020-06-04 12:44:51.464 10483-10483/com.berkancalikoglu.retrofitkotlin I/System.out: 0.00319961
2 Answers

You can use like this:

class Address {
    @SerializedName("address")
    @Expose
    var address: String? = null
    @SerializedName("zipCode")
    @Expose
    var zipCode: Any? = null
    @SerializedName("country")
    @Expose
    var country: Country? = null
    @SerializedName("countryCode")
    @Expose
    var countryCode: String? = null
    @SerializedName("town")
    @Expose
    var town: Town? = null
    @SerializedName("city")
    @Expose
    var city: City? = null

}

class CenterPointDistance {
    @SerializedName("name")
    @Expose
    var name: String? = null
    @SerializedName("code")
    @Expose
    var code: String? = null
    @SerializedName("value")
    @Expose
    var value: Boolean? = null
    @SerializedName("type")
    @Expose
    var type: String? = null
    @SerializedName("position")
    @Expose
    var position: Int? = null
    @SerializedName("count")
    @Expose
    var count: Int? = null

}


class Child {
    @SerializedName("name")
    @Expose
    var name: String? = null
    @SerializedName("code")
    @Expose
    var code: String? = null
    @SerializedName("value")
    @Expose
    var value: Boolean? = null
    @SerializedName("type")
    @Expose
    var type: String? = null
    @SerializedName("position")
    @Expose
    var position: Int? = null
    @SerializedName("count")
    @Expose
    var count: Int? = null

}

class City {
    @SerializedName("id")
    @Expose
    var id: Any? = null
    @SerializedName("name")
    @Expose
    var name: String? = null

}

class Concept {
    @SerializedName("code")
    @Expose
    var code: String? = null
    @SerializedName("description")
    @Expose
    var description: String? = null
    @SerializedName("parentCode")
    @Expose
    var parentCode: String? = null
    @SerializedName("conceptIconColorCode")
    @Expose
    var conceptIconColorCode: String? = null
    @SerializedName("conceptIcon")
    @Expose
    var conceptIcon: String? = null

}

class Concept_ {
    @SerializedName("name")
    @Expose
    var name: String? = null
    @SerializedName("code")
    @Expose
    var code: String? = null
    @SerializedName("value")
    @Expose
    var value: Boolean? = null
    @SerializedName("type")
    @Expose
    var type: String? = null
    @SerializedName("position")
    @Expose
    var position: Int? = null
    @SerializedName("count")
    @Expose
    var count: Int? = null

}


class Coordinate {
    @SerializedName("longitude")
    @Expose
    var longitude: Double? = null
    @SerializedName("latitude")
    @Expose
    var latitude: Double? = null

}


class Country {
    @SerializedName("code")
    @Expose
    var code: String? = null
    @SerializedName("name")
    @Expose
    var name: String? = null

}

class Details {
    @SerializedName("id")
    @Expose
    var id: Any? = null
    @SerializedName("slug")
    @Expose
    var slug: String? = null
    @SerializedName("address")
    @Expose
    var address: Address? = null
    @SerializedName("coordinate")
    @Expose
    var coordinate: Coordinate? = null
    @SerializedName("description")
    @Expose
    var description: String? = null
    @SerializedName("hotelInfoDescription")
    @Expose
    var hotelInfoDescription: Any? = null
    @SerializedName("facilitiesGroup")
    @Expose
    var facilitiesGroup: List<Any>? = null
    @SerializedName("suitabilities")
    @Expose
    var suitabilities: List<Suitability>? = null
    @SerializedName("extra")
    @Expose
    var extra: Extra? = null
    @SerializedName("name")
    @Expose
    var name: String? = null
    @SerializedName("images")
    @Expose
    var images: List<Any>? = null
    @SerializedName("starRating")
    @Expose
    var starRating: Int? = null
    @SerializedName("reviewScore")
    @Expose
    var reviewScore: Double? = null
    @SerializedName("reviews")
    @Expose
    var reviews: List<Any>? = null
    @SerializedName("tripAdvisorScore")
    @Expose
    var tripAdvisorScore: Any? = null
    @SerializedName("tripAdvisorReviewCount")
    @Expose
    var tripAdvisorReviewCount: Any? = null
    @SerializedName("tripAdvisorScoreLocalize")
    @Expose
    var tripAdvisorScoreLocalize: Any? = null
    @SerializedName("reviewScoreLocalized")
    @Expose
    var reviewScoreLocalized: String? = null
    @SerializedName("checkInTime")
    @Expose
    var checkInTime: Any? = null
    @SerializedName("checkOutTime")
    @Expose
    var checkOutTime: Any? = null
    @SerializedName("domestic")
    @Expose
    var domestic: Boolean? = null
    @SerializedName("reviewsTotalCount")
    @Expose
    var reviewsTotalCount: Any? = null
    @SerializedName("cityCenterPointDistance")
    @Expose
    var cityCenterPointDistance: Double? = null
    @SerializedName("cityCenterPointDistanceName")
    @Expose
    var cityCenterPointDistanceName: String? = null
    @SerializedName("hotelConcept")
    @Expose
    var hotelConcept: List<Any>? = null
    @SerializedName("nearByHotels")
    @Expose
    var nearByHotels: Any? = null

}


class DiscountTag {
    @SerializedName("tag")
    @Expose
    var tag: String? = null
    @SerializedName("discountString")
    @Expose
    var discountString: String? = null
    @SerializedName("label")
    @Expose
    var label: String? = null
    @SerializedName("amount")
    @Expose
    var amount: Int? = null

}

class Extra {
    @SerializedName("image_count")
    @Expose
    var imageCount: Int? = null
    @SerializedName("thumbnailImage")
    @Expose
    var thumbnailImage: String? = null

}

class Facility {
    @SerializedName("name")
    @Expose
    var name: String? = null
    @SerializedName("code")
    @Expose
    var code: String? = null
    @SerializedName("value")
    @Expose
    var value: Boolean? = null
    @SerializedName("type")
    @Expose
    var type: String? = null
    @SerializedName("position")
    @Expose
    var position: Int? = null
    @SerializedName("count")
    @Expose
    var count: Int? = null

}

class Filters {
    @SerializedName("price")
    @Expose
    var price: Price? = null
    @SerializedName("children")
    @Expose
    var children: List<Child>? = null
    @SerializedName("score")
    @Expose
    var score: List<Score>? = null
    @SerializedName("reservation_policy")
    @Expose
    var reservationPolicy: List<ReservationPolicy>? = null
    @SerializedName("center_point_distance")
    @Expose
    var centerPointDistance: List<CenterPointDistance>? = null
    @SerializedName("concept")
    @Expose
    var concept: List<Concept_>? = null
    @SerializedName("suitability")
    @Expose
    var suitability: List<Suitability_>? = null
    @SerializedName("region")
    @Expose
    var region: List<Region>? = null
    @SerializedName("facility")
    @Expose
    var facility: List<Facility>? = null
    @SerializedName("hotel_chain")
    @Expose
    var hotelChain: List<Any>? = null

}


class Guest {
    @SerializedName("adults")
    @Expose
    var adults: Int? = null
    @SerializedName("children")
    @Expose
    var children: Int? = null

}

class Hotel {
    @SerializedName("id")
    @Expose
    var id: Int? = null
    @SerializedName("details")
    @Expose
    var details: Details? = null
    @SerializedName("rooms")
    @Expose
    var rooms: List<Room>? = null
    @SerializedName("cached")
    @Expose
    var cached: Boolean? = null
    @SerializedName("df")
    @Expose
    var df: Boolean? = null
    @SerializedName("fc")
    @Expose
    var fc: Boolean? = null

}

class Max {
    @SerializedName("name")
    @Expose
    var name: String? = null
    @SerializedName("code")
    @Expose
    var code: String? = null
    @SerializedName("value")
    @Expose
    var value: Any? = null
    @SerializedName("type")
    @Expose
    var type: String? = null
    @SerializedName("position")
    @Expose
    var position: Int? = null
    @SerializedName("count")
    @Expose
    var count: Int? = null

}

class Min {
    @SerializedName("name")
    @Expose
    var name: String? = null
    @SerializedName("code")
    @Expose
    var code: String? = null
    @SerializedName("value")
    @Expose
    var value: Any? = null
    @SerializedName("type")
    @Expose
    var type: String? = null
    @SerializedName("position")
    @Expose
    var position: Int? = null
    @SerializedName("count")
    @Expose
    var count: Int? = null

}

class Offer {
    @SerializedName("hash")
    @Expose
    var hash: String? = null
    @SerializedName("price")
    @Expose
    var price: Double? = null
    @SerializedName("concept")
    @Expose
    var concept: Concept? = null
    @SerializedName("roomClass")
    @Expose
    var roomClass: RoomClass? = null
    @SerializedName("refundableExpireDate")
    @Expose
    var refundableExpireDate: Any? = null
    @SerializedName("cancellationRules")
    @Expose
    var cancellationRules: List<Any>? = null
    @SerializedName("hasCancellationRule")
    @Expose
    var hasCancellationRule: Boolean? = null
    @SerializedName("isRefundable")
    @Expose
    var isRefundable: Boolean? = null
    @SerializedName("alerts")
    @Expose
    var alerts: List<Any>? = null
    @SerializedName("allotment")
    @Expose
    var allotment: Int? = null
    @SerializedName("information")
    @Expose
    var information: List<Any>? = null
    @SerializedName("guest")
    @Expose
    var guest: Guest? = null
    @SerializedName("provider")
    @Expose
    var provider: Int? = null
    @SerializedName("offerType")
    @Expose
    var offerType: String? = null
    @SerializedName("isSaleable")
    @Expose
    var isSaleable: Boolean? = null
    @SerializedName("needsCheck")
    @Expose
    var needsCheck: Boolean? = null
    @SerializedName("needsCheckBeforeBooking")
    @Expose
    var needsCheckBeforeBooking: Boolean? = null
    @SerializedName("sourceOfferType")
    @Expose
    var sourceOfferType: String? = null
    @SerializedName("discountFrom")
    @Expose
    var discountFrom: Double? = null
    @SerializedName("discountTags")
    @Expose
    var discountTags: List<DiscountTag>? = null
    @SerializedName("isCheapestOffer")
    @Expose
    var isCheapestOffer: Boolean? = null
    @SerializedName("buttonMessages")
    @Expose
    var buttonMessages: List<Any>? = null
    @SerializedName("freeChildAgeRange")
    @Expose
    var freeChildAgeRange: String? = null
    @SerializedName("freeChildAgeHotelDetail")
    @Expose
    var freeChildAgeHotelDetail: List<String>? = null
    @SerializedName("displayedCurrency")
    @Expose
    var displayedCurrency: String? = null

}


class Offers {
    @SerializedName("hotels")
    @Expose
    var hotels: List<Hotel>? = null
    @SerializedName("totalCount")
    @Expose
    var totalCount: Int? = null
    @SerializedName("availableCount")
    @Expose
    var availableCount: Int? = null

}


class Price {
    @SerializedName("min")
    @Expose
    var min: Min? = null
    @SerializedName("max")
    @Expose
    var max: Max? = null

}

class Region {
    @SerializedName("name")
    @Expose
    var name: String? = null
    @SerializedName("code")
    @Expose
    var code: String? = null
    @SerializedName("value")
    @Expose
    var value: Boolean? = null
    @SerializedName("type")
    @Expose
    var type: String? = null
    @SerializedName("position")
    @Expose
    var position: Int? = null
    @SerializedName("count")
    @Expose
    var count: Int? = null

}

class ReservationPolicy {
    @SerializedName("name")
    @Expose
    var name: String? = null
    @SerializedName("code")
    @Expose
    var code: String? = null
    @SerializedName("value")
    @Expose
    var value: Boolean? = null
    @SerializedName("type")
    @Expose
    var type: String? = null
    @SerializedName("position")
    @Expose
    var position: Int? = null
    @SerializedName("count")
    @Expose
    var count: Int? = null

}

class ResponseData {
    @SerializedName("responseCode")
    @Expose
    var responseCode: Int? = null
    @SerializedName("errors")
    @Expose
    var errors: Any? = null
    @SerializedName("message")
    @Expose
    var message: Any? = null
    @SerializedName("result")
    @Expose
    var result: Result? = null

}

class Result {
    @SerializedName("requestId")
    @Expose
    var requestId: String? = null
    @SerializedName("offers")
    @Expose
    var offers: Offers? = null
    @SerializedName("filters")
    @Expose
    var filters: Filters? = null
    @SerializedName("sortingMethods")
    @Expose
    var sortingMethods: List<SortingMethod>? = null

}

class Room {
    @SerializedName("reference")
    @Expose
    var reference: Any? = null
    @SerializedName("type")
    @Expose
    var type: Type? = null
    @SerializedName("images")
    @Expose
    var images: List<Any>? = null
    @SerializedName("offers")
    @Expose
    var offers: List<Offer>? = null
    @SerializedName("facilities")
    @Expose
    var facilities: List<Any>? = null
    @SerializedName("information")
    @Expose
    var information: List<Any>? = null
    @SerializedName("alerts")
    @Expose
    var alerts: List<Any>? = null
    @SerializedName("description")
    @Expose
    var description: Any? = null

}

class RoomClass {
    @SerializedName("code")
    @Expose
    var code: String? = null
    @SerializedName("description")
    @Expose
    var description: String? = null
    @SerializedName("refundable")
    @Expose
    var refundable: Boolean? = null
    @SerializedName("promotion")
    @Expose
    var promotion: Boolean? = null
    @SerializedName("package")
    @Expose
    var `package`: Boolean? = null
    @SerializedName("offer")
    @Expose
    var offer: Boolean? = null

}

class Score {
    @SerializedName("name")
    @Expose
    var name: String? = null
    @SerializedName("code")
    @Expose
    var code: String? = null
    @SerializedName("value")
    @Expose
    var value: Boolean? = null
    @SerializedName("type")
    @Expose
    var type: String? = null
    @SerializedName("position")
    @Expose
    var position: Int? = null
    @SerializedName("count")
    @Expose
    var count: Int? = null

}

class SortingMethod {
    @SerializedName("value")
    @Expose
    var value: Int? = null
    @SerializedName("text")
    @Expose
    var text: String? = null
    @SerializedName("default")
    @Expose
    var default: Boolean? = null

}

class Suitability {
    @SerializedName("code")
    @Expose
    var code: String? = null
    @SerializedName("name")
    @Expose
    var name: String? = null
    @SerializedName("description")
    @Expose
    var description: Any? = null

}

class Suitability_ {
    @SerializedName("name")
    @Expose
    var name: String? = null
    @SerializedName("code")
    @Expose
    var code: String? = null
    @SerializedName("value")
    @Expose
    var value: Boolean? = null
    @SerializedName("type")
    @Expose
    var type: String? = null
    @SerializedName("position")
    @Expose
    var position: Int? = null
    @SerializedName("count")
    @Expose
    var count: Int? = null

}

class Town {
    @SerializedName("id")
    @Expose
    var id: Any? = null
    @SerializedName("name")
    @Expose
    var name: String? = null

}

class Type {
    @SerializedName("id")
    @Expose
    var id: Any? = null
    @SerializedName("name")
    @Expose
    var name: String? = null
    @SerializedName("typeCode")
    @Expose
    var typeCode: String? = null
    @SerializedName("characteristicCode")
    @Expose
    var characteristicCode: String? = null

}

And change your fun :

interface CryptoAPI {

    @GET("otel.json")
    fun getData(): Call<ResponseData>
}

you can use the responseData like this:

responseData?.result?.offers?.hotels?.forEach { hotel ->
        hotel.rooms?.forEach { room ->
            room.offers?.forEach { offer ->  
                Log.d("Hash", offer.hash ?: "")
            }
        }
    }

This is completely working with data:

Create separate files for your Model classes:

class Crypto {
    @SerializedName("responseCode")
    @Expose
    var responseCode: Int? = null
    @SerializedName("errors")
    @Expose
    var errors: Any? = null
    @SerializedName("message")
    @Expose
    var message: Any? = null
    @SerializedName("result")
    @Expose
    var result: Result? = null

}

class Result {
    @SerializedName("requestId")
    @Expose
    var requestId: String? = null
    @SerializedName("offers")
    @Expose
    var offers: Offers? = null

}

class Offers {
    @SerializedName("hotels")
    @Expose
    var hotels: List<Hotel>? = null

}

class Hotel {
    @SerializedName("id")
    @Expose
    var id: Int? = null
    @SerializedName("details")
    @Expose
    var details: Any? = null
    @SerializedName("rooms")
    @Expose
    var rooms: List<Room>? = null
    @SerializedName("cached")
    @Expose
    var cached: Boolean? = null
    @SerializedName("df")
    @Expose
    var df: Boolean? = null
    @SerializedName("fc")
    @Expose
    var fc: Boolean? = null

}

class Room {
    @SerializedName("reference")
    @Expose
    var reference: String? = null
    @SerializedName("type")
    @Expose
    var type: Any? = null
    @SerializedName("images")
    @Expose
    var images: List<Any>? = null
    @SerializedName("offers")
    @Expose
    var offers: List<Offer>? = null
    @SerializedName("facilities")
    @Expose
    var facilities: List<Any>? = null
    @SerializedName("information")
    @Expose
    var information: List<Any>? = null
    @SerializedName("alerts")
    @Expose
    var alerts: List<Any>? = null
    @SerializedName("description")
    @Expose
    var description: Any? = null

}

class Offer {
    @SerializedName("hash")
    @Expose
    var hash: String? = null
    @SerializedName("price")
    @Expose
    var price: Double? = null

}

And Change the CryptoApi interface:

interface CryptoAPI {

    @GET("otel.json")
    fun getData(): Call<Crypto>
}

And access it as:

private val BASE_URL = "http://www.ipucubilisim.com.tr/"
    fun loadData() {

        val retrofit = Retrofit.Builder()
                .baseUrl(BASE_URL)
                .addConverterFactory(GsonConverterFactory.create())
                .build()

        val service = retrofit.create(CryptoAPI::class.java)
        val call = service.getData()

        call.enqueue(object: Callback<Crypto> {
            override fun onFailure(call: Call<Crypto>, t: Throwable) {
                t.printStackTrace()
            }

            override fun onResponse(call: Call<Crypto>, response: Response<Crypto>) {
               if(response.isSuccessful){
                   response.body()?.let { crypto ->
                       val hotels = crypto.result?.offers?.hotels
                       hotels?.forEach { hotel ->
                           val rooms = hotel.rooms
                           rooms?.forEach { room ->
                                   room.offers?.forEach { offer -> Log.d("101",offer.hash) }
                           }
                       }
                   }
               }
            }
        })
    }

Output Data :

2020-06-04 16:47:44.098 9082-9082/com.example.bottomsheet D/101: 911619993d24
2020-06-04 16:47:44.098 9082-9082/com.example.bottomsheet D/101: 404201837898
2020-06-04 16:47:44.098 9082-9082/com.example.bottomsheet D/101: 663972861500
2020-06-04 16:47:44.098 9082-9082/com.example.bottomsheet D/101: 387584646986
2020-06-04 16:47:44.098 9082-9082/com.example.bottomsheet D/101: 021175058ce5
2020-06-04 16:47:44.098 9082-9082/com.example.bottomsheet D/101: 53576001687f
2020-06-04 16:47:44.098 9082-9082/com.example.bottomsheet D/101: 6227267709c3
2020-06-04 16:47:44.098 9082-9082/com.example.bottomsheet D/101: 414423278046
2020-06-04 16:47:44.099 9082-9082/com.example.bottomsheet D/101: 6084986723a1
2020-06-04 16:47:44.099 9082-9082/com.example.bottomsheet D/101: 872143937dd8
2020-06-04 16:47:44.099 9082-9082/com.example.bottomsheet D/101: 254004362aed
2020-06-04 16:47:44.099 9082-9082/com.example.bottomsheet D/101: 519524284ab3
2020-06-04 16:47:44.099 9082-9082/com.example.bottomsheet D/101: 71377401675f
2020-06-04 16:47:44.099 9082-9082/com.example.bottomsheet D/101: 445389342b48
2020-06-04 16:47:44.099 9082-9082/com.example.bottomsheet D/101: 138200015643
2020-06-04 16:47:44.099 9082-9082/com.example.bottomsheet D/101: 640381103145
2020-06-04 16:47:44.099 9082-9082/com.example.bottomsheet D/101: 262239998a7e
2020-06-04 16:47:44.099 9082-9082/com.example.bottomsheet D/101: 517968377e04
2020-06-04 16:47:44.099 9082-9082/com.example.bottomsheet D/101: 146631345449
2020-06-04 16:47:44.099 9082-9082/com.example.bottomsheet D/101: 013286743158
2020-06-04 16:47:44.099 9082-9082/com.example.bottomsheet D/101: 3013861859c4
2020-06-04 16:47:44.100 9082-9082/com.example.bottomsheet D/101: 857449974cec
2020-06-04 16:47:44.100 9082-9082/com.example.bottomsheet D/101: 4945242072c4
Related