web-dev-qa-db-ja.com

JSONオブジェクトをSQLiteデータベースに保存する方法

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();
    }
}
51
Kevik

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);
72
Pankaj Kumar

別の方法として、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/

27
Oisin

そのためのデータ型はありません。VARCHARまたはTEXTとしてのみ保存する必要があります。jsonObject.toString();

2
Pradeep

https://github.com/requery/sqlite-Android を使用すると、JSONフィールド(およびその中の配列、私は試してみて使用しています)を照会できます。それ以前は、JSON文字列をTEXT列に格納していました。 FTS3、FTS4、およびJSON1をサポートします

2019年7月の時点では、バージョンバンプが時々発生するため、死んだプロジェクトではありません。

1
Daniel F