1233 votes

Comment analyser JSON en Java

J'ai le texte JSON suivant. Comment puis-je l'analyser pour obtenir les valeurs de pageName , pagePic , post_id etc.

    {
       "pageInfo": {
             "pageName": "abc",
             "pagePic": "http://example.com/content.jpg"
        },
        "posts": [
             {
                  "post_id": "123456789012_123456789012",
                  "actor_id": "1234567890",
                  "picOfPersonWhoPosted": "http://example.com/photo.jpg",
                  "nameOfPersonWhoPosted": "Jane Doe",
                  "message": "Sounds cool. Can't wait to see it!",
                  "likesCount": "2",
                  "comments": [],
                  "timeOfPost": "1234567890"
             }
        ]
    }

2 votes

10 votes

Les bibliothèques JSON intégrées à Java sont le moyen le plus rapide de le faire, mais selon mon expérience, GSON est la meilleure bibliothèque pour analyser un JSON dans un POJO sans douleur.

3 votes

Il existe de nombreuses bibliothèques notoires en java : jackson, gson, org.json, genson, etc. Pour en choisir une, il faut tenir compte de leurs performances relatives et de leur ensemble de fonctionnalités. Voici un benchmark réalisé avec JMH qui compare les performances des bibliothèques json les plus populaires en java : github.com/fabienrenaud/java-json-benchmark . Voir mon post ci-dessous pour plus d'informations.

873voto

user1931858 Points 710

El org.json La bibliothèque est facile à utiliser.

N'oubliez pas (lors de l'émission ou de l'utilisation de méthodes comme getJSONObject y getJSONArray ) qui, en notation JSON

  • [ … ] représente un tableau, donc la bibliothèque l'analysera en tant que JSONArray
  • { … } représente un objet, la bibliothèque l'analysera donc en tant que JSONObject

Exemple de code ci-dessous :

import org.json.*;

String jsonString = ... ; //assign your JSON String here
JSONObject obj = new JSONObject(jsonString);
String pageName = obj.getJSONObject("pageInfo").getString("pageName");

JSONArray arr = obj.getJSONArray("posts"); // notice that `"posts": [...]`
for (int i = 0; i < arr.length(); i++)
{
    String post_id = arr.getJSONObject(i).getString("post_id");
    ......
}

Vous trouverez d'autres exemples dans : Analyser JSON en Java

Bocal téléchargeable : http://mvnrepository.com/artifact/org.json/json

19 votes

Je suis d'accord avec @StaxMan. Je viens d'essayer org.json et c'est horriblement lourd. Il ne joue pas vraiment avec les types de collections standard de Java, par exemple.

8 votes

@StaxMan Je choisirais org.json sur d'autres bibliothèques pour l'analyse simple de JSON sans même regarder. Il s'agit de la bibliothèque de référence créée par Douglas Crockford (le découvreur de JSON).

40 votes

@OmarIthawi c'est tout simplement stupide. C'est une preuve de concept avec une API maladroite, une mise en œuvre inefficace. Je pense qu'il est préférable de considérer les bibliothèques sur leurs propres mérites, au lieu d'essayer de déduire la qualité à partir de la visibilité de ses auteurs - Doug a réalisé beaucoup de choses, mais cela ne change pas vraiment les qualités de la librairie particulière. Il y a 10 ans, c'était le seul jeu en ville, mais depuis lors, il y a eu beaucoup de progrès positifs. C'est comme le Struts des librairies json.

77voto

rputta Points 369

analyseur syntaxique quick-json est très simple, flexible, très rapide et personnalisable. Essayez-le

Caractéristiques :

  • Conforme à la spécification JSON (RFC4627)
  • Analyseur JSON haute performance
  • Prise en charge d'une approche d'analyse syntaxique flexible et configurable
  • Validation configurable des paires clé/valeur de toute hiérarchie JSON
  • Facile à utiliser # Très faible encombrement
  • Soulever des exceptions conviviales pour les développeurs et faciles à retracer
  • Support de la validation personnalisée enfichable - Les clés/valeurs peuvent être validées en configurant des validateurs personnalisés au fur et à mesure qu'ils sont rencontrés.
  • Support d'analyseurs de validation et de non-validation
  • Prise en charge de deux types de configuration (JSON/XML) pour l'utilisation de l'analyseur de validation rapide JSON
  • Nécessite JDK 1.5
  • Aucune dépendance à l'égard de bibliothèques externes
  • Prise en charge de la génération JSON par la sérialisation des objets
  • Prise en charge de la sélection du type de collection pendant le processus d'analyse syntaxique

Il peut être utilisé comme suit :

JsonParserFactory factory=JsonParserFactory.getInstance();
JSONParser parser=factory.newJsonParser();
Map jsonMap=parser.parseJson(jsonString);

3 votes

Y a-t-il une javadoc disponible ?

25 votes

Ce paquet ne peut pas gérer les valeurs vides lors de l'analyse syntaxique. Par exemple : ... "description" :" ... lance une Exception

7 votes

J'ai corrigé ce problème (et bien d'autres) en code.google.fr/p/quick-json/issues/detail?id=11 J'espère que l'auteur prendra le temps de le corriger dans la version officielle.

10voto

Quentin Points 325526

Ir a http://json.org/ Faites défiler jusqu'à la fin (ou presque), puis cliquez sur l'une des nombreuses bibliothèques Java répertoriées.

9voto

Fakrudeen Points 1725

Jetez un coup d'œil à Gson bibliothèque. Elle permet de réaliser des mappings et des sérialisations JSON vers des objets.

9voto

user1203153 Points 89

Veuillez vous rendre sur place : Lire des fichiers JSON à l'aide de la bibliothèque Java gson . Il vous aidera à lire les fichiers JSON avec un exemple de code complet et, surtout, le code donné est générique. Bonne chance.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X