Je souhaite envoyer des messages sous forme d'objets JSON à un serveur et analyser la réponse JSON du serveur.
Exemple d'objet JSON
{
"post": {
"username": "John Doe",
"message": "test message",
"image": "image url",
"time": "current time"
}
}
J'essaie d'analyser le JSON manuellement en allant attribut par attribut. Y a-t-il une bibliothèque / un utilitaire que je peux utiliser pour faciliter ce processus?
Réponses:
Je suis surpris que ceux-ci n'aient pas été mentionnés: mais au lieu d'utiliser des processus manuels plutôt simples avec le petit paquetage de json.org, GSon et Jackson sont beaucoup plus pratiques à utiliser. Alors:
Ainsi, vous pouvez réellement vous lier à vos propres POJO, pas à des nœuds d'arbre à moitié assed ou à des listes et des cartes. (et au moins Jackson autorise également la liaison à de telles choses (peut-être GSON aussi, pas sûr), JsonNode, Map, List, si vous voulez vraiment ces objets au lieu d'objets `` réels '')
EDIT 19-MAR-2014:
Un autre nouveau concurrent est la bibliothèque Jackson jr : elle utilise le même analyseur / générateur de streaming rapide que Jackson (
jackson-core
), mais la partie de liaison de données est minuscule (50 Ko). Les fonctionnalités sont plus limitées (pas d'annotations, juste des Java Beans classiques), mais les performances devraient être rapides et la surcharge d'initialisation (premier appel) très faible également. Cela pourrait donc être un bon choix, en particulier pour les petites applications.la source
Vous pouvez utiliser org.json.JSONObject et org.json.JSONTokener . vous n'avez pas besoin de bibliothèques externes car ces classes sont fournies avec le SDK Android
la source
GSON est le plus simple à utiliser et la voie à suivre si les données ont une structure définie.
Téléchargez gson .
Ajoutez-le aux bibliothèques référencées.
Code pour la classe de poste
la source
C'est la classe JsonParser
Remarque: DefaultHttpClient n'est plus pris en charge par sdk 23, il est donc conseillé d'utiliser la cible sdk 21 avec ce code.
la source
Il n'y a vraiment rien dans JSON. Les accolades sont pour les "objets" (tableaux associatifs) et les crochets sont pour les tableaux sans clés (indexés numériquement). En ce qui concerne son utilisation dans Android, il existe des classes prêtes à l'emploi pour celles incluses dans le sdk (aucun téléchargement requis).
Découvrez ces classes: http://developer.android.com/reference/org/json/package-summary.html
la source
D'autres réponses ont noté Jackson et GSON - les bibliothèques JSON complémentaires populaires pour Android, et json.org, le package JSON simple inclus dans Android.
Mais je pense qu'il convient également de noter qu'Android dispose désormais de sa propre API JSON complète.
Cela a été ajouté dans Honeycomb: API niveau 11.
Cela comprend
- android.util.JsonReader: docs , et source
- android.util.JsonWriter: docs , et source
J'ajouterai également une considération supplémentaire qui me repousse vers Jackson et GSON: j'ai trouvé utile d'utiliser des bibliothèques tierces plutôt que des packages android. * Car alors le code que j'écris peut être partagé entre le client et le serveur. Ceci est particulièrement pertinent pour quelque chose comme JSON, où vous voudrez peut-être sérialiser des données en JSON à une extrémité pour les envoyer à l'autre extrémité. Pour des cas d'utilisation comme celui-là, si vous utilisez Java des deux côtés, cela permet d'éviter d'introduire des dépendances android. *.
Ou je suppose que l'on pourrait récupérer le code source android. * Pertinent et l'ajouter à votre projet de serveur, mais je n'ai pas essayé cela ...
la source
Vous pouvez télécharger une bibliothèque depuis http://json.org (Json-lib ou org.json) et l'utiliser pour analyser / générer le JSON
la source
il vous suffit d'importer ceci
im utilisant deux objets car vous pouvez avoir un jsonObject dans un autre
puis je mets le post json dans un autre comme ça
c'est la méthode que j'utilise pour faire une demande
établissement de la connexion
réglage du flux de sortie
j'utilise ceci pour voir dans le logcat ce que j'envoie
ici la chaîne est construite
j'utilise ce journal pour voir ce qu'il arrive dans la réponse
instanciation d'un json avec la chaîne qui contient la réponse du serveur
la source
si vous recherchez une analyse rapide de json dans Android, je vous suggère un outil disponible gratuitement.
Outil JSON Class Creator
Son utilisation est gratuite et crée votre classe d'analyse entièrement json en une à deux secondes.: D
la source
Bien qu'il y ait déjà d'excellentes réponses fournies par les utilisateurs, par exemple encourager l'utilisation de GSON, etc. Je voudrais suggérer l'utilisation de org.json . Il comprend la plupart des fonctionnalités GSON. Il vous permet également de passer la chaîne json comme argument à son JSONObject et il s'occupera du reste, par exemple:
JSONObject json = new JSONObject("some random json string");
Cette fonctionnalité en fait ma préférée.
la source
Il existe différentes bibliothèques open source que vous pouvez utiliser pour analyser json.
org.json: - Si vous voulez lire ou écrire json, vous pouvez utiliser cette bibliothèque. Créez d'abord JsonObject: -
Maintenant, utilisez cet objet pour obtenir vos valeurs: -
Vous pouvez voir l'exemple complet ici
Jackson databind: - Si vous voulez lier et analyser votre json à une classe POJO particulière, vous pouvez utiliser la bibliothèque jackson-databind, cela liera votre json à la classe POJO: -
Vous pouvez voir l'exemple complet ici
la source