101 votes

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 méthode ?

Si je peux convertir l'objet JSON en tableau d'octets et utiliser le flux de sortie Fileoutputstream

L'autre idée est de stocker dans une colonne de texte comme une chaîne de caractères.

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

109voto

Pankaj Kumar Points 19620

Convertissez JSONObject en String et enregistrez en TEXT/ VARCHAR. Lors de la récupération de la même colonne, convertissez la chaîne en JSONObject.

Par exemple

Écriture dans la base de données

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

Lecture de la BD

String json = Read_column_value_logic_here
JSONObject jsonObject = new JSONObject(json);

52voto

Oisin Points 436

Une alternative pourrait être d'utiliser la nouvelle extension JSON pour SQLite. Je viens juste de la découvrir moi-même : https://www.sqlite.org/json1.html Cela vous permettrait d'effectuer un certain niveau d'interrogation du JSON stocké. Si vous utilisez VARCHAR ou TEXT pour stocker une chaîne JSON, vous n'aurez pas la possibilité de l'interroger. Voici un excellent article montrant son utilisation (en python) http://charlesleifer.com/blog/using-the-sqlite-json1-and-fts5-extensions-with-python/

5voto

Pradeep Points 956

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

1voto

Daniel F. Points 836

https://github.com/requery/sqlite-Android vous permet d'interroger les champs JSON (et les tableaux qu'ils contiennent, je l'ai essayé et je l'utilise). Avant cela, je ne faisais que stocker des chaînes JSON dans une colonne TEXTE. Il supporte FTS3, FTS4 et JSON1.

En juillet 2019, il reçoit encore des changements de version de temps en temps, ce n'est donc pas un projet mort.

-14voto

Appz Points 61

https://github.com/app-z/Json-to-SQLite

Dans un premier temps, générez des Plain Old Java Objects à partir de JSON. http://www.jsonschema2pojo.org/

Méthode principale

void createDb(String dbName, String tableName, List dataList, Field[] fields){ ...

Nom des champs qui seront créés dynamiquement

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X