未处理的异常org.json.jsonexception

时间:2015-01-24 21:10:36

标签: java android json sqlite

我正在开发一个Android应用程序,应用程序必须将json格式的java对象保存到SQLite数据库中。我为此操作编写了代码,然后他们必须提取Json对象并将其重新转换为Java对象。 当我尝试调用方法将json对象反序列化为字符串时,我在Android Studio中发现了这个错误:unhandled exception org.json.jsonexception

当我尝试捕获JSONException e时程序运行但不反序列化json对象。

这是该方法的代码:

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);
        // }
    }
}

你能帮我吗?

1 个答案:

答案 0 :(得分:23)

是的,你需要捕捉异常。

但是当你抓住它时,你不应该把它扔在地板上。您的应用程序需要做一些有关异常的事情。或者,如果您/它不期望在运行时发生异常,那么至少您应该报告它。这是一个最小的例子(对于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。