【问题标题】:How to parse JSON in Kotlin如何在 Kotlin 中解析 JSON
【发布时间】:2018-07-23 12:04:57
【问题描述】:

如何在 Kotlin 中解析 JSON?它从 JSON 中获取整个数组,但无法从 Array 中获取特定对象。

它在 Java 中有效,但在 Kotlin 中无效。

try {
    val jsonObject = JSONObject(result)
    val users = jsonObject.getJSONArray("Users")
    for (i in 0 until users.length())
    {
        Toast.makeText(applicationContext,"Json Result is----"+result,Toast.LENGTH_LONG).show()
        val obj = users.getJSONObject(i)
        val name = obj.get("name").toString()
        Toast.makeText(applicationContext, "User name: "+name , Toast.LENGTH_LONG).show();
    }
}catch(e: JSONException){}

【问题讨论】:

  • 显示您的json 数据。
  • 如果它可以在 Java 中运行,为什么要使用 Kotlin?请格式化您的代码,它看起来很糟糕。
  • 另外,如果它在 Java 中工作,您可以通过让 IntelliJ 将 Java 转换为 Kotlin (Code -> Convert Java file to Kotlin file) 来了解 Kotlin 代码应该如何。结果可能并不完美,但这是一个很好的起点
  • 发布您的 json url 或数据
  • 只使用 [Gson ](github.com/google/gson)

标签: android json parsing kotlin


【解决方案1】:

使用jsonObject.getString(paramName: String),而不是jsonObject.get(paramName: String).toString()

或者您也可以将此对象转换为字符串。 见http://www.docjar.com/docs/api/org/json/JSONObject.html

【讨论】:

    【解决方案2】:

    最好和快速的做法不是手动检查每个键,而是使用工具生成本机 Kotlin“数据类”,例如https://json2kotlin.com

    所以你的 API 响应变成了下面几个对应 JSON 结构的数据类:

    data class Json4Kotlin_Base (
    
        val users : List<Users>
    )
    

    data class Users (
    
        val id : String,
        val name : String,
        val age : Int,
        val gender : String,
        val email : Email
    )
    

    data class Email (
    
        val primary : String,
        val secondary : String
    )
    

    获得结果后,您只需将 JSON 响应映射到这些数据类。 video here 展示了如何逐步完成,并包含更多示例代码。

    【讨论】:

      猜你喜欢
      • 2017-06-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-08
      • 2022-01-03
      • 2021-10-08
      • 1970-01-01
      相关资源
      最近更新 更多