Cela peut être une question stupide, mais quelle est la façon la plus simple de lire et d'analyser JSON à partir d'une URL en Java ?
Dans Groovy, il s'agit de quelques lignes de code. Les exemples Java que je trouve sont ridiculement longs (et ont un énorme bloc de gestion des exceptions).
Tout ce que je veux faire, c'est lire le contenu de ce lien .
json_decode(file_get_contents($url));
et être fait!Réponses:
En utilisant l'artefact Maven,
org.json:json
j'ai obtenu le code suivant, qui je pense est assez court. Pas aussi court que possible, mais toujours utilisable.la source
readLine
fonction fera alors la boucle, et je dois concaténer les lignes au lieu des caractères, ce qui est plus cher. Cela ne garderait pas le code aussi court qu'il l'est actuellement. De plus, en notation JSON il n'y a pas de concept de "lignes", alors pourquoi devrais-je les lire comme telles?IOUtils.toString(InputStream)
méthode d' Apache commons-io . Cela devrait vous épargner quelques lignes et responsabilités.InputStream
. Bien que le code ci-dessus puisse être court àorg.json
utiliser, assurez-vous de vérifier les autres bibliothèques disponibles - il n'est pas nécessaire d'écrire plus de 1 à 3 lignes de code pour cette tâche.Voici quelques versions alternatives avec Jackson (car il existe plusieurs façons de vouloir des données):
Et en particulier le cas habituel (IMO) où vous souhaitez traiter des objets Java, peut être réalisé sur une seule ligne:
D'autres bibliothèques comme Gson prennent également en charge les méthodes à une ligne; pourquoi de nombreux exemples montrent des sections beaucoup plus longues est étrange. Et pire encore, de nombreux exemples utilisent la bibliothèque org.json obsolète; cela a peut-être été la première chose à faire, mais il existe une demi-douzaine de meilleures alternatives, il n'y a donc que très peu de raisons de l'utiliser.
la source
java.net.URL
mais soit on travaille, ainsi que beaucoup d'autres sources (File
,InputStream
,Reader
,String
).String
faudrait que le contenu soit JSON et non le codage textuel de l'URI / URL à utiliser.La manière la plus simple: utilisez gson, la propre bibliothèque goto json de google. https://code.google.com/p/google-gson/
Voici un exemple. Je vais sur ce site Web de géolocalisation gratuit et j'analyse le json et affiche mon code postal. (il suffit de mettre ce truc dans une méthode principale pour le tester)
la source
rootobj.get("zip_code").getAsString();
Si cela ne vous dérange pas d'utiliser quelques bibliothèques, cela peut être fait sur une seule ligne.
Inclut les bibliothèques Apache Commons IOUtils et json.org .
la source
Utilisez HttpClient pour récupérer le contenu de l'URL. Et puis utilisez la bibliothèque de json.org pour analyser le JSON. J'ai utilisé ces deux bibliothèques sur de nombreux projets et elles ont été robustes et simples à utiliser.
En dehors de cela, vous pouvez essayer d'utiliser une bibliothèque Java Facebook API. Je n'ai aucune expérience dans ce domaine, mais il y a une question sur le débordement de pile lié à l' utilisation d'une API Facebook en Java . Vous voudrez peut-être considérer RestFB comme un bon choix pour une bibliothèque à utiliser.
la source
J'ai fait l'analyseur json de la manière la plus simple, le voici
cette classe renvoie l'objet json de l'url
et quand vous voulez l'objet json, vous appelez simplement cette classe et la méthode dans votre classe Activity
mon code est ici
ici la "clé json" est dénotée que la clé dans votre fichier json
ceci est un simple exemple de fichier json
Ici, "json" est la clé et "hi" est la valeur
Cela obtiendra votre valeur json pour le contenu de la chaîne.
la source
C'est très simple, en utilisant jersey-client, il suffit d'inclure cette dépendance maven:
Ensuite, invoquez-le en utilisant cet exemple:
Utilisez ensuite le Gson de Google pour analyser le JSON:
la source
J'ai trouvé que c'était de loin le moyen le plus simple.
Utilisez cette méthode:
Et utilisez-le comme ceci:
la source
Je ne sais pas si cela est efficace, mais c'est l'une des manières possibles:
Lire json à partir de l'url
url.openStream()
et lire le contenu dans une chaîne.construire un objet JSON avec cette chaîne (plus sur json.org )
la source
Je voulais ajouter une réponse mise à jour ici, car les mises à jour récentes (quelque peu) du JDK ont facilité la lecture du contenu d'une URL HTTP. Comme d'autres l'ont dit, vous devrez toujours utiliser une bibliothèque JSON pour effectuer l'analyse, car le JDK n'en contient pas actuellement. Voici quelques-unes des bibliothèques JSON les plus couramment utilisées pour Java:
Pour récupérer JSON à partir d'une URL, cela semble être le moyen le plus simple d'utiliser strictement des classes JDK (mais probablement pas quelque chose que vous voudriez faire pour de grandes charges utiles), Java 9 a introduit: https://docs.oracle.com/en/ java / javase / 11 / docs / api / java.base / java / io / InputStream.html # readAllBytes ()
Pour analyser le JSON à l'aide de la bibliothèque GSON, par exemple
la source
Voici un échantillon complet de la façon d'analyser le contenu Json. L'exemple prend les statistiques des versions d'Android (trouvées à partir du code source d'Android Studio ici , qui renvoie à ici ).
Copiez le fichier "distributions.json" que vous obtenez à partir de là dans res / raw, comme solution de rechange.
build.gradle
manifeste
MainActivity.kt
Comme alternative à la dépendance, vous pouvez également l'utiliser à la place:
et le repli:
Le résultat de l'exécution de ceci:
la source