web-dev-qa-db-fra.com

Comment stocker un objet JSON dans une base de données SQLite

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

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

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/

25
Oisin

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();

2
Pradeep

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

0
Daniel F