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.
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() :
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. Soutenez les tutoriels gratuits vogella▲
Ce tutoriel représente du contenu libre (Open Content) sous licence CC BY-NC-SA 3.0 DE. Le code source de ce tutoriel est distribué sous la licence publique Eclipse. Voir la page de la licence vogella pour plus de détails sur les conditions de réutilisation.
La rédaction et la mise à jour des tutoriels nécessitent beaucoup de travail. Si ce service gratuit vous a été utile, vous pouvez soutenir la cause en faisant un don, ainsi qu'en signalant les fautes de frappe et de contenu.
4-1. Remerciement▲
Si cet article vous a été utile, vous pouvez faire un don à Lars Vogel sur la page de l'article original.
4-2. Questions et discussions▲
Si vous trouvez des erreurs dans ce tutoriel, s'il vous plaît informez-moi (voir en haut de la page). Veuillez noter qu'en raison du volume élevé de commentaires que je reçois, je ne peux pas répondre à des questions concernant votre application. Assurez-vous d'avoir lu la FAQ vogella, peut-être que les réponses s'y trouvent déjà.
5. Liens et littérature ▲
5-1. Code source▲
5-2. Ressources Android▲
5-3. Ressources vogella▲
- Vogella Training : cours Android et Eclipse de l'équipe vogella.
- Tutoriel Android : introduction à la programmation Android.
- Tutoriel GWT : programmation en Java et compilation en JavaScript et HTML.
- Tutoriel Eclipse RCP : création d'applications natives en Java.
- Tutoriel JUnit : testez votre application.
- Tutoriel Git : mettez vos fichiers dans un système distribué de gestion de versions.
6. 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.
N'hésitez pas à commenter cet article ! 1 commentaire ![]()




