Я пытаюсь определить ключевые слова, которые позволят мне получить доступ к API с объектом JSON в Котлине.Я видел много примеров в Java, но я не знаю, как это понять в Kotlin.
API, который я использую, это http://numbersapi.com/#random/trivia и может получить доступ к параметрам: text
, number
, found
и type
.
val apiURL = "http://numbersapi.com/random/year?json"
private fun loadRandomFact() {
runOnUiThread {
progressBar.visibility = View.VISIBLE
}
val request:Request = Request.Builder()
.url(apiURL).build()
okHttpClient.newCall(request).enqueue(object: Callback {
override fun onFailure(call: Call, e: IOException) {
}
override fun onResponse(call: Call, response: Response) {
val json = response?.body()?.string()
val txt = (JSONObject(json).getJSONObject("number")
.get("text")).toString()
//update the ui from the ui thread
runOnUiThread {
progressBar.visibility = View.GONE
//use Html class to decode html entities
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
factTv.text = Html.fromHtml(txt,Html.FROM_HTML_MODE_LEGACY)
} else {
factTv.text = Html.fromHtml(txt)
}
}
}
})
В val txt
я знаю, что запросы в объекте JSON (number
и text
) неверны, потому что моипроисходит сбой приложения, и я знаю, что оно работает с похожим API и сообщает мне об этом в LOGCAT:
Caused by: org.json.JSONException: No value for
at org.json.JSONObject.get(JSONObject.java:392)
at org.json.JSONObject.getJSONObject(JSONObject.java:612)
Какие запросы будет выполнять функция Kotlin JSON для этого API?Я перепробовал так много комбинаций, но ни одна из них не сработала.