一尘不染

未处理的异常org.json.jsonexception

json

我正在开发一个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);
        // }
    }
}

你能帮我吗?


阅读 674

收藏
2020-07-27

共1个答案

一尘不染

是的,您需要捕获异常。

但是当您抓住它时,您不应该只是将其扔在地板上。你的应用程序需要 做一些
关于异常。或者,如果您/预计运行时不会发生异常,则至少应报告该异常。这是一个最小的示例(适用于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。

2020-07-27