正在使用kotlin開發應用程序。現在我想從服務器獲取JSON數據。如何使用kotlin Android從Url讀取JSON?
在java中,我實現了Asyntask以及Rxjava從Url讀取JSON。我也在谷歌搜索,但我不能得到我的要求適當的細節。
如何使用kotlin從Url讀取JSON?
正在使用kotlin開發應用程序。現在我想從服務器獲取JSON數據。如何使用kotlin Android從Url讀取JSON?
在java中,我實現了Asyntask以及Rxjava從Url讀取JSON。我也在谷歌搜索,但我不能得到我的要求適當的細節。
如何使用kotlin從Url讀取JSON?
試試這個
fun parse(json: String): JSONObject? {
var jsonObject: JSONObject? = null
try {
jsonObject = JSONObject(json)
} catch (e: JSONException) {
e.printStackTrace()
}
return jsonObject
}
最後是利用改造2.0 RxJava, RxAndroid, 科特林的Android擴展Here
讀取JSON數據得到答案。
fun provideRetrofit(): Retrofit {
return Retrofit.Builder()
.baseUrl("https://www.example.com")
.addConverterFactory(MoshiConverterFactory.create())
.build()
}
模塊
interface Api {
@GET("/top.json")
fun getTop(@Query("after") after: String,
@Query("limit") limit: String): Call<NewsResponse>;
}
我想你想讀取服務器API,您希望與JSON字符串的響應。要做到這一點,你可以使用:
val apiResponse = URL("yourUrl").readText()
從docs:
使用UTF-8或指定字符集讀取該URL的全部內容爲一個字符串。
此方法不建議在大文件上使用。
請注意,如果您在Android活動中使用此應用程序,則應用程序崩潰是因爲您使用異步調用阻止了主線程。爲避免應用程序崩潰,我建議您使用Anko。更確切地說,你只需要add the commons dependency-不是整個圖書館。
你可以找到更多信息in this blog post
誤導人。也不回答問題。 –
@ Paul-Sebastian不僅它回答了這個問題,而且它是唯一一個能夠解答如何在不使用Java庫的情況下做到的問題。它如何誤導? –
對不起,我想上次我試過你的答案,但沒有奏效,但我不記得爲什麼。只是不理我。抱歉。 –
READTEXT()是方法,當他(在博客文章,也爲每dgrcode的answer)引入了網絡在他的著作科特林Android開發但是安東尼萊瓦使用I 'm不確定readText()是一種正確的方法,通常可以從URL中請求JSON響應,因爲響應可能非常大(即使安東尼奧提到確認Kotlin文檔聲明對readText有大小限制的事實)。根據this discussion,您應該使用流而不是readText。我希望在不添加庫依賴關係的情況下,使用該方法或Kotlin中最簡潔和最優化的任何方法來查看對此答案的回覆。
還要注意,安東尼確實在博客帖子的情況下提供替代品時READTEXT()不是合適的選擇。我很樂意看到有人在何時適當或不適合時提供了一些清晰的內容。
我需要從服務器url讀取json數據。 – sasikumar
現有的Android庫與Kotlin兼容,您可以改造或選擇獲取數據。 –