Developpez.com

Plus de 14 000 cours et tutoriels en informatique professionnelle à consulter, à télécharger ou à visionner en vidéo.

Tutoriel sur l'utilisation du format JSON sous Android

JSON avec Android

Cet article décrit comment utiliser JSON sous Android. Il est basé sur Eclipse 3.6, Java 1.6 et Android 2.3.3 (Gingerbread).

Nous remercions Lars Vogel qui nous a aimablement autorisé à traduire et héberger cet article.

Les commentaires et les suggestions d'amélioration sont les bienvenus, alors, après votre lecture, n'hésitez pas. 1 commentaire Donner une note à l'article (5).

Article lu   fois.

Les deux auteur et traducteur

Site personnel

Traducteur : Profil Pro

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

1. Android et JSON

1-1. Android et JSON

JSON est un format d'échange de données très condensé. Voir le tutoriel JSON pour plus de détails. La plate-forme Android inclut les bibliothèques json.org qui permettent de travailler facilement avec des fichiers JSON.

1-2. Exemple JSON : Twitter

Twitter est une grande source de JSON. Vous pouvez simplement appeler une URI et récupérer du JSON. Voici quelques exemples :

Tableau 1. Des URI Twitter Table 1. Twitter URIs

URI Description
https://api.twitter.com/1/statuses/user_timeline/vogella.json Obtenir la chronologie de l'utilisateur vogella.
http://search.twitter.com/search.json?q=android Rechercher le terme « Android » sur Twitter.

Veuillez noter que certains URI retournent un objet JSONObject tandis que d'autres renvoient un JsonArray.

2. Lire du JSON

Créez un nouveau projet Android appelé de.vogella.android.twitter.json avec le paquetage de.vogella.android.twitter.json et l'activité appelée ParseJSON.

Créez le code suivant pour l'activité. Ceci va télécharger le flux Twitter de l'utilisateur appelé vogella et écrire le nombre d'entrées et les messages texte dans le fichier log d'Android.

 
Sélectionnez
package de.vogella.android.twitter.json;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.StatusLine;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONObject;

import android.app.Activity;
import android.os.Bundle;
import android.util.Log;

public class ParseJSON extends Activity {
  
/** Appelée quand l'activité est créée pour la première fois. */

  @Override
  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    
    # Uniquement pour tester, permet l'accès réseau dans le thread principal
    # NE JAMAIS utiliser en production
    StrictMode.ThreadPolicy policy = new StrictMode.
    ThreadPolicy.Builder().permitAll().build();
    StrictMode.setThreadPolicy(policy); 
    
    
    setContentView(R.layout.main);
    String readTwitterFeed = readTwitterFeed();
    try {
      JSONArray jsonArray = new JSONArray(readTwitterFeed);
      Log.i(ParseJSON.class.getName(),
          "Number of entries " + jsonArray.length());
      for (int i = 0; i < jsonArray.length(); i++) {
        JSONObject jsonObject = jsonArray.getJSONObject(i);
        Log.i(ParseJSON.class.getName(), jsonObject.getString("text"));
      }
    } catch (Exception e) {
      e.printStackTrace();
    }
  }

  public String readTwitterFeed() {
    StringBuilder builder = new StringBuilder();
    HttpClient client = new DefaultHttpClient();
    HttpGet httpGet = new HttpGet("http://twitter.com/statuses/user_timeline/vogella.json");
    try {
      HttpResponse response = client.execute(httpGet);
      StatusLine statusLine = response.getStatusLine();
      int statusCode = statusLine.getStatusCode();
      if (statusCode == 200) {
        HttpEntity entity = response.getEntity();
        InputStream content = entity.getContent();
        BufferedReader reader = new BufferedReader(new InputStreamReader(content));
        String line;
        while ((line = reader.readLine()) != null) {
          builder.append(line);
        }
      } else {
        Log.e(ParseJSON.class.toString(), "Failed to download file");
      }
    } catch (ClientProtocolException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
    return builder.toString();
  }
}

Avertissement

Dans l'exemple, l'accès au réseau dans le fil d'exécution principal est autorisé afin de simplifier le code. En réalité, veillez à ce que l'accès au réseau se fait dans un fil d'exécution d'arrière-plan.

Pour exécuter cet exemple, ajoutez la uses-permission "android.permission.INTERNET" à votre fichier AndroidManifest.xml.

3. Écrire du JSON

L'écriture du JSON est très simple. Il suffit de créer le JsonObject ou JsonArray et d'utiliser la méthode toString() :

 
Sélectionnez
public void writeJSON() {
  JSONObject object = new JSONObject();
  try {
    object.put("name", "Jack Hack");
    object.put("score", new Integer(200));
    object.put("current", new Double(152.32));
    object.put("nickname", "Hacker");
  } catch (JSONException e) {
    e.printStackTrace();
  }
  System.out.println(object);
}

4. Liens et littérature

4-1. Code source

4-2. Ressources Android

5. Remerciements Developpez

Vous pouvez retrouver l'article original à l'adresse JSON in Android - Tutorial. Nous remercions Lars Vogel qui nous a aimablement autorisé à traduire et héberger ses articles.

Nous remercions aussi Mishulyna pour sa traduction, ainsi que milkoseck pour sa relecture orthographique.

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

  

Licence Creative Commons
Le contenu de cet article est rédigé par Lars Vogel et est mis à disposition selon les termes de la Licence Creative Commons Attribution - Partage dans les Mêmes Conditions 3.0 non transposé.
Les logos Developpez.com, en-tête, pied de page, css, et look & feel de l'article sont Copyright © 2013 Developpez.com.