I. Android et JSON▲
I-A. 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.
I-B. 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. |
Rechercher le terme « Android » sur Twitter. |
Veuillez noter que certains URI retournent un objet JSONObject tandis que d'autres renvoient un JsonArray.
II. 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.
III. É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);
}
IV. Liens et littérature▲
V. Remerciements Developpez▲
Vous pouvez retrouver l'article original à l'adresse JSON in Android - Tutorial. Nous remercions Lars Vogel qui nous a aimablement autorisés à traduire et héberger ses articles.
Nous remercions aussi Mishulyna pour sa traduction, ainsi que milkoseck pour sa relecture orthographique.