Lecture de JSON et insertion dans une BDD SQLite - ListViewJson
ListViewJson 11/08/2013 0

Lecture de JSON et insertion dans une BDD SQLite - ListViewJson

Dans cette partie du projet, on s'occupera de traiter les données JSON reçu en HTTP et d'utiliser les fonctions créer précédement pour notre base de données SQLite.

Après avoir mis en place notre tâche asynchrone, la connexion HTTP vers notre fichier JSON et la base de donnée SQLite nécessaire pour l'application, on va maintenant enregistrer les données reçu dans la base de donnée.

 

Chaine de caractère vers objet JSON

On retourne dans notre classe asynchrone BackTask pour un appel de fonction dans doInBackground.

BackTask.java

On ajoute un appel vers la fonction parseContact que l'on va ensuite créer. Elle prend en paramètre une chaine de caractère en format JSON.

  1. On créer notre objet JSON par rapport à la chaine de caractère.
  2. On contrôle aussi d'eventuelle erreur en affichant l'erreur avec la fonction log.e.
  3. Et on retourne notre objet JSON

 

Objet JSON vers SQLite

On ajoute de nouveau un appel de fonction dans doInBackground.

BackTask.java

On ajoute un appel vers la fonction recContact que l'on va ensuite créer. Elle prend en paramètre un objet JSON.

BackTask.java

  1. On ouvre la connexion vers la base de donnée en utilisant ContactsDataSource que l'on a créer à l'étape précédente.
  2. Ensuite on commence le traitement de notre objet JSON, format de notre fichier de départ (avec correspondance aux codes de la fonction) :
{ // JSONObject (correspond à jsonContact)
    "employes": 
	[ // JSONArray (correspond à JSONArray contacts)
        {
                "id": "001",
                "nom": "contact",
                "prenom": "un",
                "mail": "contact.un@gmail.com",
		"adresse": "1 rue du contact",
                "telephone": { // JSONObject (correspond à JSONObject phone)
                    "professionnel": "03 11 11 11 11",
                    "personnel": "04 11 11 11 11"
                }
        },
...
 ]
}
  1. On boucle sur le JSONArray contacts tout en créant un JSONObject à chaque ligne de JSONArray
  2. Ensuite on extrait les valeurs, tout en créant un JSONObjet supplémentaire pour la partie phone.
  3. On appel la fonction createContact de notre datasource avec en paramètre toutes les valeurs extraites précédement.
  4. Et on n'oublit pas de fermer la connexion
  5. Biensur on contrôle d'eventuelle erreur (si aucune erreur on retourne true sinon false)