Android-无法使用空白读取JSON字符串

时间:2018-11-22 13:55:48

标签: android json whitespace

我从JSONArray读取字符串时遇到问题。代码周围的try-catch引发未找到元素的错误。我怀疑这与空格有关,空格是行的每个键末尾的字符。

    JSONArray dettaglio = result.getJSONArray("dettaglioAttivita");
    for(int i = 0; i <dettaglio.length(); i++){

        JSONObject row = dettaglio.getJSONObject(i);

        String durata = row.getString("Durata ");
        Toast.makeText(getApplicationContext(), durata.toString(), Toast.LENGTH_LONG).show();
    }

JSON响应:请注意,JSONObject的键字符串末尾有空格。

"dettaglioAttivita": [
  {
"Unità Dididattica ": " FISICA - MODULO A - [UD-1] ",
"Tipo Attività ": " LEZ",
"Tipo Formaz. ": " Base",
"Settore ": " FIS/01 - FISICA SPERIMENTALE",
"CFU ": " 6",
"Durata ": " 48"
},
  {
"Unità Dididattica ": " FISICA - MODULO B - [UD-2] ",
"Tipo Attività ": " LEZ",
"Tipo Formaz. ": " Base",
"Settore ": " FIS/01 - FISICA SPERIMENTALE",
"CFU ": " 6",
"Durata ": " 48"
}
],

例外是: org.json.JSONException:杜拉塔(Durata)没有价值

1 个答案:

答案 0 :(得分:0)

刚刚在Kotlin中进行了测试,对我来说,它可以处理空格:

backgroundColor

打印出用于:

import org.json.JSONObject

fun main(args : Array<String>) {


    val json = """
    {
    "dettaglioAttivita": [
        {
            "UnitàDididattica ":"FISICA - MODULO A - [UD-1]",
            "TipoAttività ":"LEZ",
            "TipoFormaz. ":"Base",
            "Settore ": "FIS/01 - FISICA SPERIMENTALE",
            "CFU":" 6",
            "Durata ":" 48"
        },
        {
            "UnitàDididattica ":"FISICA - MODULO B - [UD-2]",
            "TipoAttivit à":"LEZ",
            "TipoFormaz ":"Base",
            "Settore ":"FIS/01 - FISICA SPERIMENTALE",
            "CFU ":"6",
            "Durata ":" 48"
        }
        ]
    }
    """

    println(json)


    try {
        val jsonObject = JSONObject(json)

        val dettaglio = jsonObject.getJSONArray("dettaglioAttivita")
        for (i in 0 until dettaglio.length()) {

            val row = dettaglio.getJSONObject(i)
            println("ROW: $row")

            val durata = row.getString("Durata ")
            println("DURATA: $durata")
        }
    }catch (e : Throwable){
        println(e.toString())
    }


}