I have an Android application written in Kotlin, that gets data from an API, for now it's just a local hosted JSON file. When I'm trying to get the data, I receive the error that my list, persons, is not initialized thus persons == null and didn't receive the data. I'm not sure what I did wrong and how to fix this.
The model
data class Person (
  @Json(name = "personId")
  val personId: Int,
  @Json(name = "personName")
  val name: String,
  @Json(name = "personAge")
  val age: Int,
  @Json(name = "isFemale")
  val isFemale: Boolean,
)
The JSON response
{
  "persons": [{
      "personId": 1,
      "personName": "Bert",
      "personAge": 19,
      "isFemale": "false",
    }
  ]
}
The ApiClient
class ApiClient {
    companion object {
        private const val BASE_URL = "http://10.0.2.2:3000/"
        fun getClient(): Retrofit {
            val moshi = Moshi.Builder()
                .add(customDateAdapter)
                .build()
            return Builder()
                .baseUrl(BASE_URL)
                .addConverterFactory(MoshiConverterFactory.create(moshi))
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .build()
        }
    }
}
The Retrofit http methods
interface ApiInterface {
    @GET("persons")
    fun getPersons(): Observable<List<Person>>
}
and finally the call
class PersonActivity: AppCompatActivity(){
  private lateinit var jsonAPI: ApiInterface
  private lateinit var persons: List<Person>
  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_person)
    val retrofit = ApiClient.getClient()
    jsonAPI = retrofit.create(ApiInterface::class.java)
    jsonAPI.getPersons()
            .subscribeOn(Schedulers.io())
            .unsubscribeOn(Schedulers.computation())
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe({ persons = it })
  }
}
Expected: Data from the JSON file into the persons list instead of NULL.
 
     
    