首页 > 解决方案 > kotlin 无法转换为 JSONArray

问题描述

当我尝试获取 JSONArray 时出现此错误arrivals

这是我的 json :

{
  "arrivals": [
    {
      "airline": "Iraqi Airways",
      "alia": "Iraqi Airways IAW",
      "flight": "IA136"
    }
  ]
}

我的代码:

private fun handleJson (jsonString: String?){

        val jsonObj = JSONArray("arrivals")
        val list =  ArrayList<FlightShdu>()
        var x = 0
        while (x < jsonObj.length()){

            val jsonObject = jsonObj.getJSONObject(x)

            list.add(FlightShdu(

                jsonObject.getInt("airline"),
                jsonObject.getString("fn")

            ))


            x++
        }
        val adapter = ListAdapte(this@MainActivity,list)
        flightShdu_list.adapter = adapter

    }

标签: kotlin

解决方案


我无法理解你的代码并写得一样

尝试这个

fun test(){
    handleJson("""{
        "arrivals": [
        {
            "airline": "Iraqi Airways",
            "alia": "Iraqi Airways IAW",
            "flight": "IA136"
        }
        ]
    }""")
}

data class FlightShdu(
        val airline:String,
        val alia:String,
        val flight:String? = null
)
private fun handleJson (jsonString: String?){
    val jsonObj = JSONObject(jsonString)
    val jsonArray = JSONArray(jsonObj.get("arrivals").toString())
    val list =  ArrayList<FlightShdu>()
    var x = 0
    while (x < jsonArray.length()){

        val jsonObject = jsonArray.getJSONObject(x)

        list.add(FlightShdu(

                jsonObject.getString("airline"),
                jsonObject.getString("alia")

        ))
        x++
    }

    list.forEach(::println)
}

您的 json 以{转换为 JSONObject开头

是从哪里来fn的?

airline:Iraqi Airways可以转换成字符串


推荐阅读