web-dev-qa-db-de.com

So speichern Sie ein JSON-Objekt in der SQLite-Datenbank

wie speichere ich ein JSON-Objekt in einer SQLite-Datenbank? Was ist der richtige Weg?

eine Stelle ist die Blob-Typ-Spalte. Wenn ich das JSON-Objekt in ein Byte-Array konvertieren und Fileoutputstream verwenden kann

die andere Idee ist, in einer Textspalte als String zu speichern

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

JSONObject in String konvertieren und als TEXT/VARCHAR speichern. Beim Abrufen derselben Spalte wird der String in JSONObject konvertiert. 

Zum Beispiel 

Schreiben in DB 

String stringToBeInserted = jsonObject.toString();
//and insert this string into DB

Lesen aus DB 

String json = Read_column_value_logic_here
JSONObject jsonObject = new JSONObject(json);
70
Pankaj Kumar

Eine Alternative könnte die Verwendung der neuen JSON-Erweiterung für SQLite sein. Ich bin gerade erst auf dieses Problem gestoßen: https://www.sqlite.org/json1.html Dies würde Ihnen erlauben, eine bestimmte Stufe der Abfrage der gespeicherten JSON durchzuführen. Wenn Sie mit VARCHAR oder TEXT einen JSON-String speichern, können Sie ihn nicht abfragen. Dies ist ein großartiger Artikel, der seine Verwendung zeigt (in Python) http://charlesleifer.com/blog/using-the-sqlite-json1-and-fts5-extensions-with-python/

25
Oisin

Es gibt keine Datentypen dafür. Sie müssen es nur als VARCHAR oder TEXT speichern. jsonObject.toString();

2
Pradeep

Es ist eine ziemlich alte Frage, aber https://github.com/requery/sqlite-Android erlaubt sogar die Abfrage von JSON-Feldern (und Arrays darin, ich habe es ausprobiert und verwende es). Vorher habe ich nur JSON-Strings in einer TEXT-Spalte gespeichert. Unterstützt FTS3, FTS4 und JSON1

0
Daniel F