有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java错误json解析

将Java代码更改为Kotlin代码。这是Kotlin,我认为过去的json解析不起作用。它在Java中起作用。那么,有什么解决办法呢

package io.github.taehoon02.dimibob

    import 安卓.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) 个答案

  1. # 1 楼答案

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

    改变

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

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

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