durgaprasad kalapati durgaprasad kalapati - 3 months ago 14
JSON Question

How to retieve a row from a table and set that values to a json array and get that json array as return value

getting contact method

Cursor cursor = db.rawQuery("SELECT * FROM "
+ TB_AssessmentChooseValues.NAME + " where "
+ TB_AssessmentChooseValues.CL_1_USER_ID + "='"+ userid +"' AND "
+ TB_AssessmentChooseValues.CL_2_BOOK_ID + "='"+ bookid +"' AND "
+ TB_AssessmentChooseValues.CL_3_CHAPTER_ID + "='" + chapterid +"' AND "
+ TB_AssessmentChooseValues.CL_4_QUESTION_ID + "='" + questionid + "'",null);
if(cursor.getCount() > 0) {
cursor.moveToFirst();
do {
JSONObject jsonObject = new JSONObject();
jsonObject.put("userid", cursor.getString(cursor.getColumnIndex(TB_AssessmentChooseValues.CL_1_USER_ID)));
jsonObject.put("bookid", cursor.getString(cursor.getColumnIndex(TB_AssessmentChooseValues.CL_2_BOOK_ID)));
jsonObject.put("chapterid", cursor.getString(cursor.getColumnIndex(TB_AssessmentChooseValues.CL_3_CHAPTER_ID)));
jsonObject.put("questionid", cursor.getString(cursor.getColumnIndex(TB_AssessmentChooseValues.CL_4_QUESTION_ID)));
jsonObject.put("optionid", cursor.getString(cursor.getColumnIndex(TB_AssessmentChooseValues.CL_5_OPTION_ID)));
jsonObject.put("currentanswer", cursor.getString(cursor.getColumnIndex(TB_AssessmentChooseValues.CL_6_CURRENT_ANSWER)));
array.put(jsonObject);
}while(cursor.moveToNext());

object .put("getchooseinfo",array);
}
cursor.close();
}
catch(Exception e)
{
e.printStackTrace();
}
return object ;

}


Retrieving the json array

> JSONObject RetrievedChoose = rdb.getChooseContact(getContext(),userid, BookId ,chapter_idchoose ,question_idchoose);
try {
JSONArray jsonMainArr = RetrievedChoose.getJSONArray("array");
Log.d("logchoose", "getsuccess"+jsonMainArr);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}


The error showing is

08-12 10:41:11.707: W/System.err(9253): org.json.JSONException: No value for array
08-12 10:41:11.707: W/System.err(9253): org.json.JSONException: No value for array
08-12 10:41:11.707: W/System.err(9253): at org.json.JSONObject.getJSONArray(JSONObject.java:584)
08-12 10:41:11.707: W/System.err(9253): at com.aeldata.eduflex.fragment.DoublePageFragment$MyWebChromeClient.onJsAlert(DoublePageFragment.java:549)
08-12 10:41:11.707: W/System.err(9253): at com.android.webview.chromium.WebViewContentsClientAdapter.handleJsAlert(WebViewContentsClientAdapter.java:805)
08-12 10:41:11.707: W/System.err(9253): at org.chromium.android_webview.AwContentsClientBridge.handleJsAlert(AwContentsClientBridge.java:232)
08-12 10:41:11.707: W/System.err(9253): at org.chromium.base.SystemMessageHandler.nativeDoRunLoopOnce(Native Method)
08-12 10:41:11.708: W/System.err(9253): at org.chromium.base.SystemMessageHandler.handleMessage(SystemMessageHandler.java:39)

Answer
    public JSONArray cur2Json(Cursor cursor) {

JSONArray resultSet = new JSONArray();
cursor.moveToFirst();
while (cursor.isAfterLast() == false) {
    int totalColumn = cursor.getColumnCount();
    JSONObject rowObject = new JSONObject();   
    for (int i = 0; i < totalColumn; i++) {
        if (cursor.getColumnName(i) != null) {
            try {
                rowObject.put(cursor.getColumnName(i),
                        cursor.getString(i));
            } catch (Exception e) {
                Log.d(TAG, e.getMessage());
            }
        }
    }
    resultSet.put(rowObject);
    cursor.moveToNext();
}

cursor.close();
return resultSet;

    }

Pass your cursor result as a parameter and it will return json

Comments