2014-09-08 23 views
12

C'è un modo per convertire sqlite in json? Tutte le altre domande stanno analizzando json e salvando in sqlite. Non riesco a trovare alcun riferimento su questo, per favore aiutatemi.Converti SQLite in JSON

Ho un db sqlite nell'app e ne ho bisogno per convertirlo in json, aggiornare la versione db, analizzare il json convertito in precedenza e aggiungere un'altra tabella. Qualche suggerimento su come dovrei farlo?

Grazie in anticipo.

+0

JSON è un formato di dati orientato agli oggetti, è necessario fare il mapping OO-relazionale te. – user1095108

+0

puoi ottenere un ArrayList dal tuo Db e con una libreria come Gson o Jackson convertirlo in JSON. –

+0

deve essere un processo lungo. ma non capisco cosa sia con il -1. –

risposta

26

Riferimento Link

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; 
} 
+2

Bello uno @ Sagar. Mi hai battuto. Stavo per rispondere allo stesso modo: P – Deb

+1

Mi dispiace Deb ... Happy Coding :) –

+4

Questo è dall'articolo [Convertire il risultato del cursore del database in Json Array] (http: //tech.sarathdr.com/android-app/convert-database-cursor-result-to-json-array-android-app-development/). È bene pubblicare il link di riferimento quando si copia incolla. –

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