web-dev-qa-db-ja.com

SQLiteをJSONに変換

Sqliteをjsonに変換する方法はありますか?他のすべての質問は、jsonを解析してsqliteに保存しています。これに関する参考資料が見つからないようです。手伝ってください。

アプリ内にsqlite dbがあり、jsonに変換し、dbバージョンをアップグレードし、以前に変換したjsonを解析し、別のテーブルを追加する必要があります。これをどのように行うべきかについての提案はありますか?

前もって感謝します。

17
Lei Leyba

参照 リンク

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

コーディングしたくない場合の迅速で簡単な方法:

  • SQLite用DBブラウザーをダウンロード: https://sqlitebrowser.org/ (はい、無料です)
  • SQLite DBを開きます
  • [ファイル]> [エクスポート]> [テーブルをJSONに移動]に移動します。
  • 出来上がり

何らかの理由でNULL値を正しく変換しないことに注意してください。これは空の文字列に変換します...それに加えて、今のところ私は魅力のように動作します。

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

sqlite、すでにjson1拡張機能があります。次を使用できます。

           //https://www.sqlite.org/json1.html

           //https://Gist.github.com/akehrer/481a38477dd0518ec0086ac66e38e0e2
         var _sql = "SELECT json_group_array( json_object('id', id, 'name', name)    ) AS json_result FROM (SELECT * FROM ipfs ORDER BY id); ";

sql.jsはjson1拡張をサポートしていません。

私の作業例では、生のレコードをjsonに変換します

 function json1_extension(_records){



                                      var _json = [];


                                        var _columns = _records[0].columns
                                        var _values = _records[0].values


                                          for (var i = 0; i < _values.length; i++) {
                                              //console.log(_values[i]);
                                                var _row_json = {};

                                                var _row = _values[i];
                                                for (var k = 0; k < _row.length; k++) {
                                                    _row_json[_columns[k]] = _row[k]


                                                }

                                              //console.log('_row_json...',_row_json);
                                             _json.Push(_row_json)   

                                          }







                    return _json
                }
0
hoogw

SQLiteをJSONに変換するには、このpythonツール: https://github.com/Austyns/sqlite-to-json-python を使用できます。

また、このオンラインツールを使用することもできます https://data-converters.web.app/ コーディングしたくない場合

0
Austine Iyke