sas*_*mar 1 android kotlin rx-kotlin
我正在使用kotlin开发应用程序.现在我想从服务器获取JSON数据.
在java中我实现了Asyntask以及Rxjava,用于从Url读取JSON.我也在谷歌搜索,但我无法得到我的要求的正确细节.
如何使用kotlin从Url读取JSON?
我想你正在尝试从服务器API读取响应,你希望它是一个带有JSON的字符串.为此,您可以使用:
val apiResponse = URL("yourUrl").readText()
Run Code Online (Sandbox Code Playgroud)
来自文档:
使用UTF-8或指定的字符集将此URL的全部内容读取为String.
不建议在大文件上使用此方法.
请注意,如果您在Android活动中使用此功能,应用程序会崩溃,因为您使用异步调用阻止了主线程.为避免应用程序崩溃,我建议您使用Anko.更准确地说,您只需添加公共依赖项 - 而不是整个库 - .
您可以在此博客文章中找到更多信息
readText() 是 Antonio Leiva 在他的《Kotlin for Android Developers》一书中介绍网络时使用的方法(以及根据dgrcode的答案在博客文章中)但是我不确定 readText() 是否是一般的正确方法用于从 URL 请求 JSON 响应,因为响应可能非常大(甚至 Antonio 也提到确认 Kotlin 文档说 readText 存在大小限制)。根据此讨论,您应该使用流而不是 readText。我希望看到使用该方法或 Kotlin 中最简洁和最佳的方法对此答案的响应,而不添加库依赖项。
另请参阅此线程
另请注意,Antonio 确实在该博客文章中为 readText() 不是适当选择的情况提供了替代方案。我很乐意看到有人澄清什么时候合适或不合适。
尝试这个
fun parse(json: String): JSONObject? {
var jsonObject: JSONObject? = null
try {
jsonObject = JSONObject(json)
} catch (e: JSONException) {
e.printStackTrace()
}
return jsonObject
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11075 次 |
| 最近记录: |