Récupérer la réponse d'une API en JSON
Fermé
Kilkenny95
Messages postés
151
Date d'inscription
lundi 24 septembre 2018
Statut
Membre
Dernière intervention
31 août 2020
-
Modifié le 17 oct. 2019 à 20:29
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 31 oct. 2019 à 21:09
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 31 oct. 2019 à 21:09
A voir également:
- Récupérer données json java
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Recuperer message whatsapp supprimé - Guide
- Recuperer video youtube - Guide
- Java apk - Télécharger - Langages
4 réponses
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
16 oct. 2019 à 18:17
16 oct. 2019 à 18:17
Bonjour,
Ça n'a aucun intérêt de repartir d'aussi bas niveau qu'une regex.
Tu devrais directement utiliser les standards de Java EE.
Par exemple : https://cxf.apache.org/docs/jax-rs-client-api.html
Ça n'a aucun intérêt de repartir d'aussi bas niveau qu'une regex.
Tu devrais directement utiliser les standards de Java EE.
Par exemple : https://cxf.apache.org/docs/jax-rs-client-api.html
[Dal]
Messages postés
6198
Date d'inscription
mercredi 15 septembre 2004
Statut
Contributeur
Dernière intervention
13 décembre 2024
1 096
17 oct. 2019 à 12:59
17 oct. 2019 à 12:59
Salut Kilkenny95,
Je ne peux pas répondre pour t'éclairer sur la suggestion de KX, car je ne fais du Java que très occasionnellement.
mais... dans ton cas, est-ce qu'une simple bibliothèque permettant de parser le JSON que tu récupères ne serait pas suffisante ?
Il en existe de nombreuses : https://github.com/fabienrenaud/java-json-benchmark
Celle-ci https://github.com/stleary/JSON-java par exemple (qui n'est pas la meilleure ni la plus optimisée selon le comparatif ci-dessus) est assez simple d'utilisation pour des besoins simples : http://theoryapp.com/parse-json-in-java/
Exemple tiré de ce lien :
Tu as un topic SO sur la question : https://stackoverflow.com/questions/2591098/how-to-parse-json-in-java
Dal
Je ne peux pas répondre pour t'éclairer sur la suggestion de KX, car je ne fais du Java que très occasionnellement.
mais... dans ton cas, est-ce qu'une simple bibliothèque permettant de parser le JSON que tu récupères ne serait pas suffisante ?
Il en existe de nombreuses : https://github.com/fabienrenaud/java-json-benchmark
Celle-ci https://github.com/stleary/JSON-java par exemple (qui n'est pas la meilleure ni la plus optimisée selon le comparatif ci-dessus) est assez simple d'utilisation pour des besoins simples : http://theoryapp.com/parse-json-in-java/
Exemple tiré de ce lien :
String str = "{ \"name\": \"Alice\", \"age\": 20 }"; JSONObject obj = new JSONObject(str); String n = obj.getString("name"); int a = obj.getInt("age"); System.out.println(n + " " + a); // prints "Alice 20"
Tu as un topic SO sur la question : https://stackoverflow.com/questions/2591098/how-to-parse-json-in-java
Dal
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
Modifié le 17 oct. 2019 à 16:03
Modifié le 17 oct. 2019 à 16:03
Bonjour,
Voici un exemple de service REST https://jsonplaceholder.typicode.com/users qui liste des utilisateurs.
Avec CXF pour la partie JAX-RS et Jackson pour la partie JSON, je peux écrire ce code :
Remarque : il faut bien sûr ajouter les dépendances sur CXF et Jackson, par exemple avec Maven :
Voici un exemple de service REST https://jsonplaceholder.typicode.com/users qui liste des utilisateurs.
Avec CXF pour la partie JAX-RS et Jackson pour la partie JSON, je peux écrire ce code :
import java.util.List; import javax.ws.rs.client.ClientBuilder; import javax.ws.rs.core.GenericType; import javax.ws.rs.core.Response; import com.fasterxml.jackson.annotation.JsonIgnoreProperties; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider; @JsonIgnoreProperties(ignoreUnknown=true) class User { @JsonProperty("name") public String name; @JsonProperty("address") public Address address; } @JsonIgnoreProperties(ignoreUnknown = true) class Address { @JsonProperty("city") public String city; } public class Application { public static void main(String[] args) { Response response = ClientBuilder.newClient().register(JacksonJsonProvider.class) .target("https://jsonplaceholder.typicode.com/").path("users") .request().get(); List<User> users = response.readEntity(new GenericType<List<User>>() {}); for (User user : users) { System.out.println(user.name + " : " + user.address.city); } } }
Remarque : il faut bien sûr ajouter les dépendances sur CXF et Jackson, par exemple avec Maven :
<dependencies> <dependency> <groupId>org.apache.cxf</groupId> <artifactId>cxf-rt-rs-client</artifactId> <version>3.0.15</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.jaxrs</groupId> <artifactId>jackson-jaxrs-json-provider</artifactId> <version>2.10.0</version> </dependency> </dependencies>
Kilkenny95
Messages postés
151
Date d'inscription
lundi 24 septembre 2018
Statut
Membre
Dernière intervention
31 août 2020
17 oct. 2019 à 16:07
17 oct. 2019 à 16:07
merci, mais je ne vois pas du tout ce qu'est une dependances CXF ou Jackson.
De plus, je n'arrive pas à générer mes classes java avec mon JSON avec jsonschema2pojo....
De plus, je n'arrive pas à générer mes classes java avec mon JSON avec jsonschema2pojo....
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
>
Kilkenny95
Messages postés
151
Date d'inscription
lundi 24 septembre 2018
Statut
Membre
Dernière intervention
31 août 2020
17 oct. 2019 à 17:19
17 oct. 2019 à 17:19
Une dépendance, c'est un morceau de code fourni par quelqu'un d'autre, il faut ajouter les jars correspondants sinon tu ne pourra pas compiler ou exécuter ton code.
Les imports javax.ws.rs.* dépendent de CXF, et les imports com.fasterxml.jackson de Jackson.
Si tu arrives à faire fonctionner mon exemple, ce sera déjà un bon début...
Quant à jsonschema2pojo, c'est un outil parmi d'autres sur internet, qui permet de générer automatiquement du code à partir d'un extrait de JSON ou d'un contrat YAML (l'idéal).
Voici comment j'aurais pu le configurer pour mon exemple, mais tu pourrais très bien coder tes POJO à la main.
Les imports javax.ws.rs.* dépendent de CXF, et les imports com.fasterxml.jackson de Jackson.
Si tu arrives à faire fonctionner mon exemple, ce sera déjà un bon début...
Quant à jsonschema2pojo, c'est un outil parmi d'autres sur internet, qui permet de générer automatiquement du code à partir d'un extrait de JSON ou d'un contrat YAML (l'idéal).
Voici comment j'aurais pu le configurer pour mon exemple, mais tu pourrais très bien coder tes POJO à la main.
Kilkenny95
Messages postés
151
Date d'inscription
lundi 24 septembre 2018
Statut
Membre
Dernière intervention
31 août 2020
23 oct. 2019 à 10:49
23 oct. 2019 à 10:49
Merci beaucoup, je vais tester ça.
J'ai une autre question où tu pourrais peut-être m'aider : j'ai surement besoin d'une base de données pour stocker mes donnée recupérer par mon appli web, puis-utiliser une base Access ? ai-je besoin d'un autre outils pour faire communiquer cette base à mon appli (ormis un JDBC)
Merci à toi
J'ai une autre question où tu pourrais peut-être m'aider : j'ai surement besoin d'une base de données pour stocker mes donnée recupérer par mon appli web, puis-utiliser une base Access ? ai-je besoin d'un autre outils pour faire communiquer cette base à mon appli (ormis un JDBC)
Merci à toi
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
23 oct. 2019 à 12:10
23 oct. 2019 à 12:10
Théoriquement oui, tu pourrais utiliser une base Access, mais ce n'est pas la plus simple à intégrer à Java.
Si tu as le choix du JDBC je te conseille PostgreSQL. Mais à part le driver JDBC il n'y a rien besoin de plus.
Si tu as le choix du JDBC je te conseille PostgreSQL. Mais à part le driver JDBC il n'y a rien besoin de plus.
Kilkenny95
Messages postés
151
Date d'inscription
lundi 24 septembre 2018
Statut
Membre
Dernière intervention
31 août 2020
23 oct. 2019 à 12:57
23 oct. 2019 à 12:57
J'avais lu qu'en utilisant Tomcat, étant un serveur d’application, il pouvait stocker des données. Et encore une fois, puis-je mettre tomcat sur un serveur ? (le serveur de mon service au boulot). Car je le répète, j'essaye de developper une application web.
Merci
Merci
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
23 oct. 2019 à 13:23
23 oct. 2019 à 13:23
Le plus simple serait d'utiliser Spring Boot, ce serait "juste un jar" qu'il faudrait démarrer via une commande java sur ton serveur, donc sans installer Tomcat.
Une application Spring Boot contient son propre serveur et démarre ton service directement.
Par contre il faudrait quand même installer une base de données à part, à moins que tes besoins en données soient limités, auquel cas tu pourrais utiliser une base de données embarquée (Derby par exemple), c'est à dire que quand tu lances le jar, il démarrer la base de donnée et le serveur en même temps.
Tout en un, c'est pratique (mais ça a aussi ces limites)
Une application Spring Boot contient son propre serveur et démarre ton service directement.
Par contre il faudrait quand même installer une base de données à part, à moins que tes besoins en données soient limités, auquel cas tu pourrais utiliser une base de données embarquée (Derby par exemple), c'est à dire que quand tu lances le jar, il démarrer la base de donnée et le serveur en même temps.
Tout en un, c'est pratique (mais ça a aussi ces limites)
Kilkenny95
Messages postés
151
Date d'inscription
lundi 24 septembre 2018
Statut
Membre
Dernière intervention
31 août 2020
23 oct. 2019 à 13:26
23 oct. 2019 à 13:26
Quand tu parles de services, tu parles de mon appli web ...?
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
>
Kilkenny95
Messages postés
151
Date d'inscription
lundi 24 septembre 2018
Statut
Membre
Dernière intervention
31 août 2020
23 oct. 2019 à 13:27
23 oct. 2019 à 13:27
Oui.
17 oct. 2019 à 10:06