jSONオブジェクトをSQLiteデータベースに保存するにはどうすればよいですか?正しい方法は何ですか?
1つの場所はblob型の列です。 JSONオブジェクトをバイト配列に変換してFileoutputstreamを使用できる場合
他のアイデアは、文字列としてテキスト列に保存することです
import org.json.JSONObject;
JSONObject jsonObject;
public void createJSONObject(Fields fields) {
jsonObject = new JSONObject();
try {
jsonObject.put("storedValue1", fields.storedValue1);
jsonObject.put("storedValue2", fields.storedValue2);
jsonObject.put("storedValue3", fields.storedValue3);
jsonObject.put("storedValue4", fields.storedValue4);
jsonObject.put("storedValue5", fields.storedValue5);
jsonObject.put("storedValue6", fields.storedValue6);
} catch (JSONException e) {
e.printStackTrace();
}
}
JSONObjectを文字列に変換し、TEXT/VARCHARとして保存します。同じ列を取得しながら、文字列をJSONObjectに変換します。
例えば
DBに書き込む
String stringToBeInserted = jsonObject.toString();
//and insert this string into DB
DBからの読み取り
String json = Read_column_value_logic_here
JSONObject jsonObject = new JSONObject(json);
別の方法として、SQLiteの新しいJSON拡張機能を使用することもできます。私はこれに出くわしただけです。 https://www.sqlite.org/json1.html これにより、保存されたJSONに対して一定レベルのクエリを実行できます。 VARCHARまたはTEXTを使用してJSON文字列を保存した場合、クエリを実行することはできません。これは、Pythonでの使用法を示す素晴らしい記事です http://charlesleifer.com/blog/using-the-sqlite-json1-and-fts5-extensions-with-python/
そのためのデータ型はありません。VARCHARまたはTEXTとしてのみ保存する必要があります。jsonObject.toString();
https://github.com/requery/sqlite-Android を使用すると、JSONフィールド(およびその中の配列、私は試してみて使用しています)を照会できます。それ以前は、JSON文字列をTEXT列に格納していました。 FTS3、FTS4、およびJSON1をサポートします
2019年7月の時点では、バージョンバンプが時々発生するため、死んだプロジェクトではありません。