我正在开发一个Android应用,该应用必须将json格式的Java对象保存到SQLite数据库中。我为此操作编写了代码,然后他们必须提取Json对象并将其重新转换为Java对象。当我尝试调用将json对象反序列化为字符串的方法时,我在Android Studio中发现此错误:unhandled exception org.json.jsonexception
unhandled exception org.json.jsonexception
当我尝试捕获JSONException e程序运行但不反序列化json对象时。
JSONException e
这是该方法的代码:
private void read() throws JSONException { SQLiteDatabase db = mMioDbHelper.getWritableDatabase(); String[] columns = {"StringaAll"}; Cursor c = db.query("Alle", columns, null, null, null, null,null ); while(c.moveToNext()) { String stringaRis = c.getString(0); JSONObject jObj = new JSONObject(stringaRis); String sPassoMed = jObj.getString("passoMed"); final TextView tView = (TextView) this.findViewById(R.id.mainProvaQuery); tView.setText(sPassoMed); // } } }
你能帮我吗?
是的,您需要捕获异常。
但是当您抓住它时,您不应该只是将其扔在地板上。你的应用程序需要 做一些 关于异常。或者,如果您/预计运行时不会发生异常,则至少应报告该异常。这是一个最小的示例(适用于Android应用)
try { ... JSONObject jObj = new JSONObject(stringaRis); ... } catch (JSONException e) { Log.e("MYAPP", "unexpected JSON exception", e); // Do something to recover ... or kill the app. }
当然,这不能解决您的问题。您需要做的下一件事是弄清楚为什么会出现异常。首先阅读已登录到logcat的异常消息。
重新发出此异常消息:
org.json.JSONException:类型为java.lang.String的值A无法转换为JSONObject
我假设它是由以下行抛出的:
JSONObject jObj = new JSONObject(stringaRis);
我认为这是在告诉您stringaRis具有"A"… 的值,并且无法将其解析为JSON对象。它根本不是JSON。
stringaRis
"A"