将SQLite转换为JSON

Lei*_*yba 17 android android-sqlite android-json

有没有办法将sqlite转换为json?所有其他问题是解析json并保存到sqlite.我似乎无法找到任何参考,请帮助我.

我在应用程序内部有一个sqlite数据库,我需要它转换为json,升级db版本,解析早期转换的json并添加另一个表.关于我该怎么做的任何建议?

提前致谢.

Sag*_*wal 33

参考链接

private JSONArray getResults()
{

String myPath = DB_PATH + DB_NAME;// Set path to your database 

String myTable = TABLE_NAME;//Set name of your table

//or you can use `context.getDatabasePath("my_db_test.db")`

SQLiteDatabase myDataBase = SQLiteDatabase.openDatabase(myPath, null, SQLiteDatabase.OPEN_READONLY); 

String searchQuery = "SELECT  * FROM " + myTable;
Cursor cursor = myDataBase.rawQuery(searchQuery, null );

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 
                    { 
                        if( cursor.getString(i) != null )
                        {
                            Log.d("TAG_NAME", cursor.getString(i) );
                            rowObject.put(cursor.getColumnName(i) ,  cursor.getString(i) );
                        }
                        else
                        {
                            rowObject.put( cursor.getColumnName(i) ,  "" ); 
                        }
                    }
                    catch( Exception e )
                    {
                        Log.d("TAG_NAME", e.getMessage()  );
                    }
                } 
            } 
            resultSet.put(rowObject);
            cursor.moveToNext();
        } 
        cursor.close(); 
        Log.d("TAG_NAME", resultSet.toString() );
        return resultSet;  
}
Run Code Online (Sandbox Code Playgroud)

  • 这是文章[将数据库游标结果转换为Json数组](http://tech.sarathdr.com/android-app/convert-database-cursor-result-to-json-array-android-app-development/) .复制粘贴时最好发布参考链接. (7认同)
  • 好朋友. - 只需一次修改.要获取数据库路径,请使用=> context.getDatabasePath("my_db_test.db") - 不要硬编码为/ data/data .... (4认同)
  • 不要自己热衷于抄袭. (3认同)

kri*_*j88 6

快速简便的方法,如果您不想对其进行编码:

  • 下载适用于SQLite的数据库浏览器:https//sqlitebrowser.org/(是的,免费)
  • 打开SQLite数据库
  • 转到文件>导出>表到JSON
  • 沃伊拉

注意,由于某种原因,它不能正确转换NULL值。它将其转换为一个空字符串...到目前为止,它的工作方式就像一个符咒。


小智 2

static JSONObject cursorToJson(Cursor c) {
    JSONObject retVal = new JSONObject();
    for(int i=0; i<c.getColumnCount(); i++) {
        String cName = c.getColumnName(i);
        try {
            switch (c.getType(i)) {
                case Cursor.FIELD_TYPE_INTEGER:
                    retVal.put(cName, c.getInt(i));
                    break;
                case Cursor.FIELD_TYPE_FLOAT:
                    retVal.put(cName, c.getFloat(i));
                    break;
                case Cursor.FIELD_TYPE_STRING:
                    retVal.put(cName, c.getString(i));
                    break;
                case Cursor.FIELD_TYPE_BLOB:
                    retVal.put(cName, DataUtils.bytesToHexString(c.getBlob(i)));
                    break;
            }
        }
        catch(Exception ex) {
            Log.e(TAG, "Exception converting cursor column to json field: " + cName);
        }
    }
    return retVal;
}
Run Code Online (Sandbox Code Playgroud)