Cours-Gratuit
  • Cours
  • Blog
home icon Cours gratuits » Cours informatique » Cours développement mobile » Cours android

Tutoriel d’apprentissage sur le développement Android JSON

Tutoriel d’apprentissage sur le développement Android JSON
Participez au vote ☆☆☆☆☆★★★★★
Aller au Téléchargement

Tutoriel d’apprentissage sur le développement Android JSON

...

1 - Qu'est-ce que JSON ?

JSON est un format léger d'échange de données. Il est facile à écrire et à lire, facilement analysable. C'est un format totalement indépendant de tout langage, ce qui en fait un langage d'échange de données idéal.

Il se base sur deux structures :

  • une collection de couple “Nom / Valeur ;
  • une liste de valeurs ordonnées.

2 - Pourquoi Jackson ?

Pour cet article, nous allons utiliser la bibliothèque Jackson. Vous allez sûrement vous demander “Pourquoi Jackson ?. Tout simplement parce qu'à mon avis, c'est la meilleure bibliothèque de parsing JSON en général et aussi sous Android. Ce benchmark vous aidera à en être convaincu.

Jackson est une bibliothèque :

  • de Streaming (Lecture / Ecriture) ;
  • rapide ;
  • puissante ;
  • possédant aucune dépendance ;
  • open source ;
  • configurable à souhait.

Vous pouvez obtenir plus d'informations sur le site officiel de Jackson.

3 - Mise en place du projet

Pour notre projet, nous allons avoir besoin d'un exemple de fichier JSON. Voici notre petit exemple qui sera disponible sur : users.json.

{

"Users": [

{

"firstname": "Nazim",

"lastname": "Benbourahla",

"login": "n_benbourahla",

"twitter": "@n_benbourahla",

"web": ""

},

{

"firstname": "Tutos",

"lastname": "android",

"login": "Tutos-android",

"twitter": "",

"web": "www.tutos-android.com"

}

]

}

Nous allons créer un projet Android avec les caractéristiques suivantes :

  • nom du projet : TutosAndroidJsonParser ;
  • version du SDK : 2.2 ;
  • nom de l'application : JSON Parser ;
  • package : com.tutos.android.json ;
  • Activité : JsonParserMainActivi

Nous allons créer un dossier lib à la racine de notre projet dans lequel nous allons mettre les jars de Jackson qui sont disponible ici.

Sans oublier de rajouter les jars au Build Path du projet.

Pour commencer nous allons créer notre vue, qui sera composée d'un bouton et d'un texte pour afficher le JSON.

<LinearLayout

xmlns:android="schemas.android.com/apk/res/android"

android:orientation="vertical"

android:layout_width="match_parent"

android:layout_height="match_parent"

> 

<Button

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:text="Parser le fichier JSON"

android:id="@+id/startParsing"

/>

<TextView

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:id="@+id/jsonDisplay"

/>

Puis nous allons créer nos modèles, correspondant à notre objet User passé dans le JSON.

Voici notre classe User.

package com.tutos.android.json.model;

public class User {

private String firstname;

private String lastname;

private String login;

private String twitter;

private String web;

public User() {

super();

this.firstname = "";

this.lastname = "";

this.login = "";

this.twitter = "";

this.web = "";

}

public User(String firstName, String lastName, String login,

String twitter, String web) {

super();

this.firstname = firstName;

this.lastname = lastName;

this.login = login;

this.twitter = twitter;

this.web = web;

}

public String getFirstname() {

returnfirstname;

}

public void setFirstname(String firstName) {

this.firstname = firstName;

}

public String getLastname() {

return lastname;

}

public void setLastname(String lastName) {

this.lastname = lastName;

}

public String getLogin() {

return login;

}

public void setLogin(String login) {

this.login = login;

}

public String getTwitter() {

return twitter;

}

public void setTwitter(String twitter) {

this.twitter = twitter;

}

public String getWeb() {

return web;

}

public void setWeb(String web) {

this.web = web;

}

}

Puis la liste des utilisateurs, qui correspond tout simplement à une HashMap de correspondance.

package com.tutos.android.json.model;

import java.util.ArrayList;

import java.util.HashMap;

public class Users extendsHashMap<String, ArrayList> {

private static final longserialVersionUID = 1L;

}

Une fois notre modèle prêt, nous allons créer une classe qu'on nommera UserController. Cette classe s'occupera

de télécharger et parser notre JSON.

package com.tutos.android.json.model;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.net.HttpURLConnection;

import java.net.MalformedURLException;

import java.net.URL;

import java.util.ArrayList;

import org.codehaus.jackson.JsonFactory;

import org.codehaus.jackson.JsonParseException;

import org.codehaus.jackson.JsonParser;

import org.codehaus.jackson.map.ObjectMapper;

import android.os.Environment;

public class UsersController {

private static final String DL_URL = "";

private ObjectMapper objectMapper = null;

private JsonFactory jsonFactory = null;

private JsonParser jp = null;

private ArrayList userList = null;

private Users users = null;

private File jsonOutputFile;

private File jsonFile;

public UsersController() {

objectMapper = newObjectMapper();

jsonFactory = newJsonFactory();

}

public void init() {

downloadJsonFile();

try{

jp = jsonFactory.createJsonParser(jsonFile);

users = objectMapper.readValue(jp, Users.class);

userList = users.get("Users");

} catch(JsonParseException e) {

e.printStackTrace();

} catch(IOException e) {

e.printStackTrace();

}

}

private void downloadJsonFile() {

try{

createFileAndDirectory();

URL url = new URL(UsersController.DL_URL);

HttpURLConnection urlConnection;

urlConnection = (HttpURLConnection) url.openConnection();

urlConnection.setRequestMethod("GET");

urlConnection.setDoOutput(true);

urlConnection.connect();

FileOutputStream fileOutput = new FileOutputStream(jsonFile);

InputStream inputStream = urlConnection.getInputStream();

byte[] buffer = newbyte[1024];

int bufferLength = 0;

while((bufferLength = inputStream.read(buffer)) > 0) {

fileOutput.write(buffer, 0, bufferLength);

}

fileOutput.close();

} catch(MalformedURLException e) {

e.printStackTrace();

} catch(IOException e) {

e.printStackTrace();

}

}

private void createFileAndDirectory() throws FileNotFoundException {

final String extStorageDirectory = Environment

.getExternalStorageDirectory().toString();

final String meteoDirectory_path = extStorageDirectory + "/tutos-android";

jsonOutputFile = new File(meteoDirectory_path, "/");

if(jsonOutputFile.exists() == false)

jsonOutputFile.mkdirs();

jsonFile = new File(jsonOutputFile, "users.json");

}

public ArrayList findAll() {

return userList;

}

public User findById(intid) {

return userList.get(id);

}

}

Cette classe s'occupera de :

  • créer un dossier “tutos-android sur le téléphone, puis un fichier users.json (createFileAndDirectory) ;
  • ouvrir une connexion avec le serveur pour lire le contenu du JSON et le recopier localement

(downloadJsonFile) ;

  • initialiser notre parseur, à l'aide du fichier JSON local :

jp = jsonFactory.createJsonParser(jsonFile);

  • Lire des valeurs portant la balise “Users :

users = objectMapper.readValue(jp, Users.class);

  • Récupérer de la liste des utilisateurs :

userList = users.get("Users");

Comme vous venez de le remarquer, parser un fichier JSON est très simple et rapide.

Pour finir, nous allons implémenter notre activité pour :

  • télécharger notre fichier JSON ;
  • afficher le résultat dans le TextView :

package com.tutos.android.json;

import android.app.Activity;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.TextView;

import com.tutos.android.json.model.User;

import com.tutos.android.json.model.UsersController;

public class JsonParserMainActivity extendsActivity {

private UsersController usersController;

private TextView displayJson;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

usersController = newUsersController();

displayJson = (TextView) findViewById(R.id.jsonDisplay);

Button startParsing = (Button) findViewById(R.id.startParsing);

startParsing.setOnClickListener(newOnClickListener() {

@Override

public void onClick(View view) {

gettingJson();

}

});

}

final void gettingJson() {

final Thread checkUpdate = new Thread() {

public void run() {

usersController.init();

final StringBuilder str = newStringBuilder("user : "

for(User u : usersController.findAll()) {

str.append("\n").append("first name : ").append(u.getFirstname());

str.append("\n").append("last name : ").append(u.getLastname());

str.append("\n").append("login : ").append(u.getLogin());

str.append("\n").append("twitter : ").append(u.getTwitter());

str.append("\n").append("Web : ").append(u.getWeb());

}

runOnUiThread(newRunnable() {

@Override

public void run() {

displayJson.setText(str.toString());

}

});

}

};

checkUpdate.start();

}

}

Ce qui vous donnera le résultat suivant :

Articles similaires

  • Comment intégrer une syntaxe Json en Python
  • Comment devenir développeur Web 3?
  • Comment élaborer un plan de développement des compétences ?
  • Comment devenir un consultant en développement durable et RSE?
  • Installer, configurer et utiliser l’application Outlook (OWA) sur Android et IOS 
  • L’importance de l’espagnol pour les enfants et les adultes

Documents similaires

  • Tutoriel sur le développement mobile avec Android et Xamarin

    Tutoriel sur le développement mobile avec Android et Xamarin

  • Cours sur le développement d'application Android pour les nuls

    Cours sur le développement d'application Android pour les nuls

  • Apprendre la programmation Android avec Android studio par la pratique

    Apprendre la programmation Android avec Android studio par la pratique

  • Cours de programmation Android openclassroom

    Cours de programmation Android openclassroom

  • Développement d'application mobile Android

    Développement d'application mobile Android

  • Support d’initiation à l’environnement de développement sous Android

    Support d’initiation à l’environnement de développement sous Android

  • Contactez-nous
  • A propos de nous
  • On recrute
  • Rechercher dans le site
  • Politique de confidentialité
  • Droit d'auteur/Copyright
  • Conditions générales d'utilisation
  • Plan du site
  • Accueil
  • Blog
  • Finance et compta.
  • Formations Pro.
  • Logiciels & Apps
  • Organisation
  • Cours informatique
  • Aide à la rédaction
  • Etudes et Metiers
  • Cours commerce
  • Cours électricité
  • Cours finance
  • Cours statistique
  • Cours économie
  • Cours Management
  • Cours comptabilité
  • Cours électronique
  • Cours gestion
  • Cours marketing
id 11354 02