comment stocker un objet JSON dans une base de données SQLite? Quelle est la bonne manière?
un endroit est la colonne de type blob. si je peux convertir l'objet JSON en tableau d'octets et utiliser Fileoutputstream
l'autre idée est de stocker dans une colonne de texte en tant que chaîne
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();
}
}
Convertissez JSONObject en String et enregistrez sous TEXT/VARCHAR. Lors de la récupération de la même colonne, convertissez la chaîne en JSONObject.
Par exemple
Écrire dans la base de données
String stringToBeInserted = jsonObject.toString();
//and insert this string into DB
Lecture à partir de la base de données
String json = Read_column_value_logic_here
JSONObject jsonObject = new JSONObject(json);
Une alternative pourrait consister à utiliser la nouvelle extension JSON pour SQLite. Je viens juste de le constater moi-même: https://www.sqlite.org/json1.html Ceci vous permettrait d'effectuer un certain niveau d'interrogation du JSON stocké. Si vous utilisiez VARCHAR ou TEXT pour stocker une chaîne JSON, vous ne pourriez pas l'interroger. C'est un excellent article montrant son utilisation (en python) http://charlesleifer.com/blog/using-the-sqlite-json1-and-fts5-extensions-with-python/
Il n'y a pas de types de données pour cela .. Vous devez le stocker en tant que VARCHAR ou TEXT seulement .. jsonObject.toString();
C'est une question assez ancienne, mais https://github.com/requery/sqlite-Android vous permet même d'interroger des champs JSON (et des tableaux dans ceux-ci, je l'ai essayé et je l'utilise). Avant cela, je stockais simplement des chaînes JSON dans une colonne TEXT. Prise en charge de FTS3, FTS4 et JSON1