2014-09-08 3 views
12

sqlite를 json으로 변환 할 수있는 방법이 있습니까? 다른 모든 질문은 json을 구문 분석하고 sqlite에 저장합니다. 이것에 대한 어떤 언급도 찾을 수없는 것 같습니다. 제발 도와주세요.SQLite를 JSON으로 변환

나는 앱 안에 sqlite db가 있고 json으로 변환해야하고, db 버전을 업그레이드하고, 이전에 변환 된 json을 구문 분석하고 다른 테이블을 추가해야합니다. 어떻게해야합니까?

미리 감사드립니다.

+0

JSON 당신이 OO - 관계 매핑을 직접 수행해야합니다, 객체 지향 데이터 형식입니다. – user1095108

+0

Db에서 ArrayList를 가져올 수 있으며 Gson 또는 Jackson과 같은 라이브러리에서 JSON으로 변환 할 수 있습니다. –

+0

은 긴 프로세스 여야합니다. 그러나 나는 -1과 함께하는 것을 얻지 못한다. –

답변

26

참조 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

좋은 한 @ Sagar.You가 나를 때렸어. 나는 같은 방식으로 대답 할거야 : P – Deb

+1

죄송합니다 Deb ... 해피 코딩 :) –

+4

이것은 [데이터베이스 커서 결과를 Json 배열로 변환] (http : //tech.sarathdr.com/android-app/convert-database-cursor-result-to-json-array-android-app-development/). 붙여 넣기를 복사 할 때 참조 링크를 게시하는 것이 좋습니다. –

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