2014-09-08 25 views
12

Czy istnieje sposób konwersji sqlite na json? Wszystkie pozostałe pytania analizują json i zapisują do sqlite. Nie mogę znaleźć żadnego odniesienia na ten temat, pomóż mi.Konwersja SQLite do JSON

Mam sqlite db wewnątrz aplikacji i potrzebuję go przekonwertować do json, uaktualnić wersję bazy danych, przeanalizować wcześniej skonwertowane json i dodać kolejną tabelę. Wszelkie sugestie dotyczące tego, jak mam to zrobić?

Z góry dziękuję.

+0

JSON jest formatem danych obiektowego, trzeba będzie zrobić mapowanie oo-relacyjne siebie. – user1095108

+0

możesz uzyskać ArrayList od swojego Db i przy pomocy biblioteki takiej jak Gson lub Jackson przekonwertować ją do JSON. –

+0

musi być długim procesem. ale nie dostaję tego, co jest z -1. –

Odpowiedz

26

referencyjny 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

Nice one @ Sagar. Biłeś mnie do tego. Miałem zamiar odpowiedzieć w ten sam sposób: P – Deb

+1

Sorry Deb ... Happy Coding :) –

+4

To jest z artykułu [Konwersja kursora bazy danych do Json Array] (http: //tech.sarathdr.com/android-app/convert-database-cursor-result-to-json-array-android-app-development/). Dobrze jest opublikować odnośnik podczas kopiowania wklejania. –

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