首页 文章

json解析时出错

提问于
浏览
-1

将Java代码更改为Kotlin代码 . 这是Kotlin,我不认为过去工作的json解析 . 它在Java中运行 . 那么,有什么解决方案呢?

package io.github.taehoon02.dimibob

    import android.os.AsyncTask
    import org.json.JSONException
    import org.json.JSONObject
    import java.io.BufferedReader
    import java.io.IOException
    import java.io.InputStreamReader
    import java.net.HttpURLConnection
    import java.net.MalformedURLException
    import java.net.URL
    import java.text.SimpleDateFormat
    import java.util.*

    class meals : AsyncTask() {
        var data = ""
        var breakfast = ""
        var lunch = ""
        var dinner = ""
        var snack = ""

        override fun doInBackground(vararg params: Void): Void? {
            try {
                val today : Calendar = Calendar.getInstance()
                val format = SimpleDateFormat("yyyyMMdd").format(today.time)

                val url = URL("https://api.dimigo.in/dimibobs/" + format)
                val httpURLConnection = url.openConnection() as HttpURLConnection
                val inputStream = httpURLConnection.inputStream
                val bufferedReader = BufferedReader(InputStreamReader(inputStream))
                var line: String? = ""
                while (line != null) {
                    line = bufferedReader.readLine()
                    data += line
                }

                val jsonObject = JSONObject(data)
                breakfast = jsonObject.get("breakfast") as String
                lunch = jsonObject.get("lunch") as String
                dinner = jsonObject.get("dinner") as String
                snack = jsonObject.get("snack") as String

            } catch (e: MalformedURLException) {
                e.printStackTrace()
            } catch (e: IOException) {
                e.printStackTrace()
            } catch (e: JSONException) {
                e.printStackTrace()
            }

            return null
        }

    }

1 回答

  • 0

    由于我没有看到您的错误消息,但我认为您需要在从 inputStream 读取数据时更改代码

    更改

    while (line != null) {
      line = bufferedReader.readLine()
      data += line
    }
    

    while ((line = bufferedReader.readLine()) != null) {
      data += line
    }
    

    通过这样做,您可以避免json字符串的空值

相关问题