Kotlin проверить данные JSON строки, если ноль - PullRequest
0 голосов
/ 14 ноября 2018

Я пытаюсь создать приложение для расписания полетов через API данных JSON. мое приложение работает нормально без проблем. Единственная проблема, которая у меня есть, это время полета. некоторые рейсы имеют нулевое значение, поэтому я хочу проверить, равно ли время нулю, вернуть N / A.

результат за время, если значение в данных json равно нулю.

enter image description here

HandleJson

   private fun handleJson (jsonString: String?){

            val jsonObj = JSONObject(jsonString)
            val result = jsonObj.getJSONObject("result")
            val response = result.getJSONObject("response")
            val airport = response.getJSONObject("airport")
            val pluginData = airport.getJSONObject("pluginData")
            val schedule = pluginData.getJSONObject("schedule")
            val arrivals = schedule.getJSONObject("arrivals")
//        val data = arrivals.getJSONObject("data")
            val jsonArray = JSONArray(arrivals.get("data").toString())

            val list =  ArrayList<FlightShdu>()
            var x = 0
            while (x < jsonArray.length()){

                val jsonObject = jsonArray.getJSONObject(x)



                list.add(FlightShdu(
                    jsonObject.getJSONObject("flight").getJSONObject("identification").getJSONObject("number").getString("default"),
                    jsonObject.getJSONObject("flight").getJSONObject("airline").getString("short"),
                    jsonObject.getJSONObject("flight").getJSONObject("status").getJSONObject("generic").getJSONObject("status").getString("text"),
                    jsonObject.getJSONObject("flight").getJSONObject("airline").getJSONObject("code").getString("icao"),
                    jsonObject.getJSONObject("flight").getJSONObject("time").getJSONObject("scheduled").getString("departure"),
                    jsonObject.getJSONObject("flight").getJSONObject("airport").getJSONObject("origin").getJSONObject("code").getString("iata"),
                    jsonObject.getJSONObject("flight").getJSONObject("aircraft").getJSONObject("model").getString("code"),
//                    for more information
                    jsonObject.getJSONObject("flight").getJSONObject("time").getJSONObject("real").getString("departure"),
                    jsonObject.getJSONObject("flight").getJSONObject("time").getJSONObject("estimated").getString("arrival")?: "N/A"
//                    jsonObject.getJSONObject("flight").getJSONObject("time").getJSONObject("estimated").getString("arrival"),
//                    jsonObject.getJSONObject("flight").getJSONObject("status").getJSONObject("generic").getJSONObject("status").getString("diverted")



                    ))


                x++
            }
            list.forEach(::println)

            val adapter = ListAdapte(this@MainActivity,list)
            flight_arrivel_list.adapter = adapter

        }

умышленная деятельность

val  TimeArrival = bundle.getString("TimeArrival")?: "N/A"
    timearraiveId2.text=getDateTime(TimeArrival)

   fun getDateTime(s: String): String? {
        try {
            val sdf = SimpleDateFormat("KK:mm a")
            val netDate = Date(s.toLong() * 1000)
            return sdf.format(netDate)
        } catch (e: Exception) {
            return e.toString()

        }
    }

Я пытаюсь использовать этот код, но он не работает.

  if (TimeArrival==null) {
        timearraiveId2.setText("N/A")
    }

1 Ответ

0 голосов
/ 14 ноября 2018

Заменить:

try {
    val sdf = SimpleDateFormat("KK:mm a")
    val netDate = Date(s.toLong() * 1000)
    return sdf.format(netDate)
} catch (e: Exception) {
    return e.toString()

}

с

try {
    val sdf = SimpleDateFormat("KK:mm a")
    val netDate = Date(s.toLong() * 1000)
    return sdf.format(netDate)
} catch (e: Exception) {
    return "N/A"
}

Вы не хотите, чтобы сама ошибка отображалась в обзоре переработчика,
Вы хотите "N/A".
Таким образом, время id равно null, тогда оператор catch вернёт "N/A".

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...