Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

unhandled exception org.json.jsonexception

I'm working on an android app, and the app must save a java object in json format into the SQLite database. I wrote the code for this operation, then they must extract the Json object and reconvert it into a Java Object. When I try to call the method for deserializing the json object in to a string, I found this error in Android Studio:unhandled exception org.json.jsonexception

When I try to catch JSONException e the program runs but don't deserialize the json object.

This is the code for the method:

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

Can you help me please?

like image 825
marsec Avatar asked Jan 24 '15 21:01

marsec


People also ask

What is org JSON JSONException?

org.json.JSONException. Thrown to indicate a problem with the JSON API. Such problems include: Attempts to parse or construct malformed documents. Use of null as a name.

What is JsonObject class in Java?

JsonObject class represents an immutable JSON object value (an unordered collection of zero or more name/value pairs). It also provides unmodifiable map view to the JSON object name/value mappings. A JsonObject instance can be created from an input source using JsonReader.


1 Answers

Yes, you need to catch the exception.

But when you catch it, you should not just throw it on the floor. Your application needs to do something about the exception. Or if you / it is not expecting an exception to occur at runtime, then at least you should report it. Here's a minimal example (for an Android app)

try {
    ...
    JSONObject jObj = new JSONObject(stringaRis);
    ...
} catch (JSONException e) {
    Log.e("MYAPP", "unexpected JSON exception", e);
    // Do something to recover ... or kill the app.
}

Of course, this does not solve your problem. The next thing you need to do is to figure out why you are getting the exception. Start by reading the exception message that you have logged to logcat.


Re this exception message:

org.json.JSONException: Value A of type java.lang.String cannot be converted to JSONObject

I assume it is thrown by this line:

    JSONObject jObj = new JSONObject(stringaRis);

I think that it is telling you is that stringaRis has the value "A" ... and that cannot be parsed as a JSON object. It isn't JSON at all.

like image 69
Stephen C Avatar answered Oct 18 '22 20:10

Stephen C