首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >解析JSON时的空指针异常(仅在某些情况下)

解析JSON时的空指针异常(仅在某些情况下)
EN

Stack Overflow用户
提问于 2022-11-03 13:16:34
回答 2查看 46关注 0票数 0

我使用这段代码来解析json文件,并在我构建的de app中更改一些项:

代码语言:javascript
复制
 fun fetchJson() {

        if (isNetworkAvailable()) {

            val request = Request.Builder().url(stationAPPJsonURL).build()

            client.newCall(request).enqueue(object : Callback {

                override fun onResponse(call: Call, response: Response) {
    
                    val body = response.body?.string()

                    val gson = GsonBuilder().create()

                    try {

                        val stationAPP = gson.fromJson(body, StationAPP::class.java)

                        //ACTIE
                        actie_zichtbaar = stationAPP.actie_zichtbaar
                        actie_img = stationAPP.actie_img
                        actie_url = stationAPP.actie_url

... I left out some code

                    catch (error: JsonParseException) {

                        runOnUiThread {

                            val toast = Toast.makeText(applicationContext, "Problem loading JSON.\nFunctionality may be limited for a while.", Toast.LENGTH_SHORT)

                            val view = toast.view!!.findViewById<TextView>(android.R.id.message)
                            toast?.let { view.gravity = Gravity.CENTER }
                            toast.setGravity(Gravity.CENTER, 0, 0)
                            toast.show()

                        }

                    }

               }

                override fun onFailure(call: Call, e: IOException) {
                runOnUiThread {

                    val toast = Toast.makeText(applicationContext, "Problem loading JSON.\nFunctionality may be limited for a while.", Toast.LENGTH_SHORT)

                    val view = toast.view!!.findViewById<TextView>(android.R.id.message)
                    view?.let { view.gravity = Gravity.CENTER }
                    toast.setGravity(Gravity.CENTER, 0, 0)
                    toast.show() --> line 1390!!

                }

            }

         }

  }

我在Google控制台的日志中看到,有时这部分代码会崩溃(4%)。我不知道为什么?我在几个设备上测试了它,没有任何错误。

谁能帮我?

是否有可能: val stationAPP = gson.fromJson(body,StationAPP::class.java)也不会抛出异常,但是json文件不知何故装载了一些错误?所以有些项目是空的?

(谢谢你的帮助;)

更新:这是它产生的错误:

代码语言:javascript
复制
Exception java.lang.NullPointerException:
  at com.familiekoning.grolloo.MainActivity$fetchJson$1.onFailure$lambda-10 (MainActivity.kt:1390)
  at com.familiekoning.grolloo.MainActivity$fetchJson$1.$r8$lambda$lczurdfMtnZdFDn9iwHvPqw9_Pg
  at com.familiekoning.grolloo.MainActivity$fetchJson$1$$ExternalSyntheticLambda8.run
  at android.os.Handler.handleCallback (Handler.java:938)
  at android.os.Handler.dispatchMessage (Handler.java:99)
  at android.os.Looper.loop (Looper.java:250)
  at android.app.ActivityThread.main (ActivityThread.java:7806)
  at java.lang.reflect.Method.invoke
  at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:592)
  at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:958)
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-11-03 14:17:02

这将是一个猜测,但如果您在任何地方看到!!,并且您有NullPointerException。你很确定这就是罪魁祸首。如果你想要一个不同的烤面包外观,有NPE安全ways

依赖的东西,即android.id.x是不安全的,因为它可能是非常依赖OEM。

票数 1
EN

Stack Overflow用户

发布于 2022-11-03 14:25:33

我改变了:

代码语言:javascript
复制
val toast = Toast.makeText(applicationContext, "Problem loading JSON.\nFunctionality may be limited for a while.", Toast.LENGTH_SHORT)

            val view = toast.view!!.findViewById<TextView>(android.R.id.message)
            view?.let { view.gravity = Gravity.CENTER }
            toast.setGravity(Gravity.CENTER, 0, 0)
            toast.show()

至:

代码语言:javascript
复制
val toast = Toast.makeText(applicationContext, "Problem loading JSON.\nFunctionality may be limited for a while.", Toast.LENGTH_SHORT)

            toast.setGravity(Gravity.CENTER, 0, 0)
            toast.show()

解决了问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74303699

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档