android Cursor to JSONArray

前端 未结 3 634
青春惊慌失措
青春惊慌失措 2021-02-14 21:52

how can I \"convert\" a Cursor to a JSONArray?

my cursor as 3columns (_id, name, birth)

I\'ve searched but I can\'t not find any examples

相关标签:
3条回答
  • 2021-02-14 22:30

    You can't convert the contents of a cursor directly into a JSONObject, but you can do that with some logic.

    for eg: retrieve the Strings from the cursor, form a String which follows the JSON format, and use it to make a json object :

    JSONObject jFromCursor=new JSONObject(string_in_JSON_format);
    
    0 讨论(0)
  • 2021-02-14 22:41

    Cursor to JSONArray

    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;
    
    }
    
    0 讨论(0)
  • 2021-02-14 22:46
    private String cursorToString(Cursor crs) {
        JSONArray arr = new JSONArray();
        crs.moveToFirst();
        while (!crs.isAfterLast()) {
            int nColumns = crs.getColumnCount();
            JSONObject row = new JSONObject();
            for (int i = 0 ; i < nColumns ; i++) {
                String colName = crs.getColumnName(i);
                if (colName != null) {
                    String val = "";
                    try {
                        switch (crs.getType(i)) {
                        case Cursor.FIELD_TYPE_BLOB   : row.put(colName, crs.getBlob(i).toString()); break;
                        case Cursor.FIELD_TYPE_FLOAT  : row.put(colName, crs.getDouble(i))         ; break;
                        case Cursor.FIELD_TYPE_INTEGER: row.put(colName, crs.getLong(i))           ; break;
                        case Cursor.FIELD_TYPE_NULL   : row.put(colName, null)                     ; break;
                        case Cursor.FIELD_TYPE_STRING : row.put(colName, crs.getString(i))         ; break;
                        }
                    } catch (JSONException e) {
                    }
                }
            }
            arr.put(row);
            if (!crs.moveToNext())
                break;
        }
        crs.close(); // close the cursor
        return arr.toString();
    }
    
    0 讨论(0)
提交回复
热议问题