web-dev-qa-db-fra.com

Convertir SQLite en JSON

Existe-t-il un moyen de convertir sqlite en json? Toutes les autres questions analysent json et enregistrent dans sqlite. Je n'arrive pas à trouver de référence, aidez-moi s'il vous plaît.

J'ai une base de données sqlite à l'intérieur de l'application et j'ai besoin qu'elle soit convertie en json, met à niveau la version de la base de données, analyse plus tôt le json converti et ajoute une autre table. Des suggestions sur comment dois-je faire cela?

Merci d'avance.

16
Lei Leyba

Référence Lien

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;  
}
30
Sagar Pilkhwal

Moyen rapide et facile si vous ne souhaitez pas le coder: 

  • Téléchargez le navigateur de base de données pour SQLite: https://sqlitebrowser.org/ (oui, c'est gratuit)
  • Ouvrez la base de données SQLite
  • Allez dans Fichier> Exporter> Table (s) en JSON 
  • Voila

Attention, pour une raison quelconque, il ne convertit pas correctement les valeurs NULL. Cela convertit ceci en une chaîne vide ... En plus, cela fonctionne comme un charme pour moi maintenant.

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;
}
1
GNewc