Sqliteをjsonに変換する方法はありますか?他のすべての質問は、jsonを解析してsqliteに保存しています。これに関する参考資料が見つからないようです。手伝ってください。
アプリ内にsqlite dbがあり、jsonに変換し、dbバージョンをアップグレードし、以前に変換したjsonを解析し、別のテーブルを追加する必要があります。これをどのように行うべきかについての提案はありますか?
前もって感謝します。
参照 リンク
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;
}
コーディングしたくない場合の迅速で簡単な方法:
何らかの理由で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;
}
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
}
SQLiteをJSONに変換するには、このpythonツール: https://github.com/Austyns/sqlite-to-json-python を使用できます。
また、このオンラインツールを使用することもできます https://data-converters.web.app/ コーディングしたくない場合