【问题标题】:How to iterate single JSON array result in Kotlin Android如何在 Kotlin Android 中迭代单个 JSON 数组结果
【发布时间】:2021-04-27 20:46:25
【问题描述】:

我正在为一个 Android Kotlin 项目工作以接收来自 Http 请求的数据。

服务器返回的数据是

{“状态”:“成功”}

我想在 Android 屏幕或控制台中检索此结果。

我尝试了以下代码,但系统说字符串无法转换为 JSONArray。

//Code for retrieve data from server
val response = client.newCall(request).execute()
val result = response.body?.string().toString()

//code to iterate json
val data = StringBuilder()
val resultArray = JSONArray(result)
 for (i in 0 until resultArray.length()){
  val jsonObject = resultArray.getJSONObject(i)
  val status = jsonObject.optString("Status")
  data.append(status)
}
textView.setText("Status" + data.toString())
println("Status" + data.toString())

请检查我的代码并建议我的代码有什么问题。

【问题讨论】:

  • 这里最高级的元素是一个JSONObject

标签: android arrays json kotlin


【解决方案1】:

您应该使用JSONObject 阅读response

val response = client.newCall(request).execute()
val result = response.body?.string().toString()

//code to iterate json
val data = StringBuilder()
val statusObject = JSONObject(result)
textView.setText("Status${statusObject.optString("Status")}")
println("Status${statusObject.optString("Status")}")

【讨论】:

    【解决方案2】:

    将 Json 转换为 Kotlin Data 类总是好的。您可以使用此 plugin 从 JSON 结构生成 Kotlin 数据类。并使用 GSON 或 Moshi 库将 json 数据解析为 Kotlin 数据类。然后您可以轻松地使用 Kotlin 数据类对象来访问响应中的任何数据。

    【讨论】:

      【解决方案3】:
      //Code for retrieve data from server
      val response = client.newCall(request).execute()
      val result = response.body?.string().toString()
      
      //code to iterate json
      val data = JSONObject(result) as JSONObject
      val dataStatus = data.getString("Status")
      
      println("$dataStatus")
      

      【讨论】:

        猜你喜欢
        • 2020-03-09
        • 1970-01-01
        • 1970-01-01
        • 2012-02-16
        • 1970-01-01
        • 2015-09-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多