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();
}
}
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);
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/
Es gibt keine Datentypen dafür. Sie müssen es nur als VARCHAR oder TEXT speichern. jsonObject.toString();
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