【问题标题】:Error json parsingjson解析错误
【发布时间】:2018-06-19 12:22:02
【问题描述】:

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

包 io.github.taehoon02.dimibob 导入 android.os.AsyncTask 导入 org.json.JSONException 导入 org.json.JSONObject 导入 java.io.BufferedReader 导入 java.io.IOException 导入 java.io.InputStreamReader 导入 java.net.HttpURLConnection 导入 java.net.MalformedURLException 导入 java.net.URL 导入 java.text.SimpleDateFormat 导入 java.util.* 类餐:AsyncTask(){ 变量数据 = "" var早餐=“” var 午餐 = "" var晚餐=“” var小吃=“” 覆盖有趣的 doInBackground(可变参数:无效):无效? { 尝试 { val 今天:日历 = Calendar.getInstance() val 格式 = SimpleDateFormat("yyyyMMdd").format(today.time) val url = URL("https://api.dimigo.in/dimibobs/" + 格式) val httpURLConnection = url.openConnection() as HttpURLConnection val inputStream = httpURLConnection.inputStream val bufferedReader = BufferedReader(InputStreamReader(inputStream)) var 行:字符串? = "" 而(行!= null){ line = bufferedReader.readLine() 数据 += 行 } val jsonObject = JSONObject(数据) 早餐 = jsonObject.get("早餐")​​ 作为字符串 午餐 = jsonObject.get("午餐") 作为字符串 晚餐 = jsonObject.get("晚餐") 作为字符串 零食 = jsonObject.get("snack") 作为字符串 } 捕捉(e:MalformedURLException){ e.printStackTrace() } 捕捉(e:IOException){ e.printStackTrace() } 捕捉(e:JSONException){ e.printStackTrace() } 返回空 } }

【问题讨论】:

  • “不工作”究竟是什么意思?
  • 好像不是json解析的。构建会正常,但应用程序将被终止。

标签: java android json kotlin


【解决方案1】:

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

改变

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

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

通过这样做,您可以避免 json 字符串出现 null 值

【讨论】:

    猜你喜欢
    • 2010-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-28
    • 2017-04-12
    相关资源
    最近更新 更多