Essayez d'utiliser l'API au format JSON en Java

introduction

Actuellement, j'ai commencé à développer avec API en Java. C'était la première fois que j'utilisais l'API en Java et j'ai réussi à l'implémenter, je vais donc l'écrire dans un sens mémoriel. Tout d'abord, je vais vous montrer la mise en œuvre générale. Après cela, je l'expliquerai dans les sections suivantes.

En cela, nous examinerons la partie implémentation de chaque section et son explication tout en regardant les références.

Obtenir une demande et une réponse API

useJson.java


public static JsonNode getResult(String urlString) {
 String result = "";
 JsonNode root = null;
 try {
	URL url = new URL(urlString);
	HttpURLConnection con = (HttpURLConnection)url.openConnection();
	con.connect(); //Connexion URL
	BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream())); 
	String tmp = "";
	
       while ((tmp = in.readLine()) != null) {
		result += tmp;
	}

	ObjectMapper mapper = new ObjectMapper();
	root = mapper.readTree(result);
	in.close();
	con.disconnect();
 }catch(Exception e) {
 	e.printStackTrace();
 }

 return root;
}

Connectez-vous à l'URL de l'API

useJson.java


URL url = new URL(urlString): //Spécifiez l'URL de l'API, y compris les paramètres de la demande
HttpURLConnection con = (HttpURLConnection)url.openConnection();
con.connect(); //Connectez-vous à l'URL

Classe d'URL

Spécifiez une chaîne de caractères de type String comme argument. Pointez une chaîne de caractères de type String vers le Web. Référence: URL de la classe

Qu'est-ce qu'un pointeur?

Un pointeur est un pointeur qui fait référence à (pointe vers) un objet lorsqu'il est accessible avec des informations d'emplacement logique.

Les informations d'emplacement logique auxquelles il est fait référence ici font référence à l'emplacement (URL) sur le Web.

[Référence: Pointer (Programmation)](https://ja.wikipedia.org/wiki/%E3%83%9D%E3%82%A4%E3%83%B3%E3%82%BF_(%E3%83) % 97% E3% 83% AD% E3% 82% B0% E3% 83% A9% E3% 83% 9F% E3% 83% B3% E3% 82% B0))

Qu'est-ce qui est logique?

«Logique» est une manière de penser correctement. Les significations de «théorie» et «raison» sont communes à «ligne». En outre, «théorie» signifie également «discuter», et «raison» signifie également «mots et principes».

En d'autres termes, il s'agit ici de faire un chemin vers l'URL (précisez l'adresse).

Référence: Que signifie «logique»? Présentation de la différence entre le synonyme «théorique» et les synonymes. Quelle est la signification de «logique»?

Classe URLConnection

Autoriser à la fois la lecture et l'écriture des ressources référencées dans les URL

openConnection Manipuler les paramètres qui affectent les connexions aux ressources distantes Référence: Class URLConnection

Utilisez BufferedReader pour obtenir une réponse de l'API

useJson a continué.java


String result = "";
BufferedReader in = new BufferedReader(new InputStreamReader(con.getInputStream()))); //Recevoir une réponse
String tmp = "";
while ((tmp = in.readLine) != null){
 result += tmp;
}

Classe BufferedReader

Lisez efficacement le texte des flux d'entrée de caractères en mettant en mémoire tampon les caractères, les tableaux et les lignes.

Ici, cela signifie lire efficacement le texte au format JSON. Référence: Class BufferedReader

Qu'est-ce que la mise en mémoire tampon?

La mise en mémoire tampon consiste à échanger des données entre plusieurs périphériques et logiciels, à compenser les différences de vitesse de traitement et de vitesse de transfert, et à envoyer et recevoir temporairement des données vers une zone de stockage dédiée en cas de décélération ou d'interruption de la communication. Enregistrez-le dans.

En d'autres termes, stockez certaines données au début de la connexion à l'API avec la requête, et lorsqu'elles se sont accumulées dans une certaine mesure, lisez la réponse en toute sécurité et accélérez la vitesse de traitement. Référence: Buffering [buffering] Buffering

Classe InputStreamReader

InputStreamReader agit comme un pont entre le flux d'octets et le flux de caractères

Ici, cela signifie déposer la réponse au format JSON dans le flux de caractères. Référence: Class InputStreamReader

(HttpURLConnection)con.getInputStream

Renvoie un flux d'entrée qui reçoit l'entrée de cette connexion. Lors de la lecture à partir du flux d'entrée renvoyé, une exception SocketTimeoutException est levée si le délai de lecture expire avant que les données ne deviennent lisibles.

"Cette connexion" est une réponse JSON. Référence: getInputStream

in.readLine()

Lisez une ligne de texte.

Lisez la réponse ligne par ligne [Référence: Résumé de la classe BufferedReader, méthode readLine ()] (https://docs.oracle.com/javase/jp/8/docs/api/java/io/BufferedReader.html)

Convertir une chaîne JSON en objet Java à l'aide d'ObjectMapper

useJson a continué ②.java


JsonNode jsonResult = null; //Initialisation
ObjectMapper mapper = new ObjectMapper();
jsonResult = mapper.readTree(result);

in.close();
con.disconnect();

Classe ObjectMapper

Peut convertir entre des objets Java et des chaînes JSON.

Référence: Jackson usage memo chaîne de caractères JSON → objet Java Description

mapper.readTree(result)

Ensuite, ObjectMapper.readTree lit le nœud racine lorsque les données du fichier JSON sont utilisées comme données d'arborescence en tant qu'objet de type JsonNode. Référence: Lire des données avec Jackson, une bibliothèque JSON pour Java

Qu'est-ce que les données d'arborescence?

Une structure arborescente est l'une des structures de données, et un élément (nœud) a plusieurs éléments enfants, un élément enfant a plusieurs éléments petits-enfants, et plus la hiérarchie est profonde, plus elle est ramifiée. La structure. On l'appelle ainsi parce qu'il ressemble à un arbre se ramifiant de tronc en branche et de branche en feuille.

Les éléments qui composent l'arborescence sont appelés nœuds et les nœuds ont une relation parent-enfant Un nœud sans parent est appelé nœud racine, et un nœud sans enfant est appelé nœud feuille.

image.png

[Référence: arborescence] Structure arborescente ](http://e-words.jp/w/%E6%9C%A8%E6%A7%8B%E9%80%A0.html)

En d'autres termes, il est appelé «readTree» qui est responsable de l'acquisition des données (nœud racine) en haut de l'arborescence.

in.close(); Fin de la classe BufferedReader

con.disconnect(); Résiliation (déconnexion) de la connexion URL

À la fin

Je suis fatigué ... w Je pense que cela ressemble à ceci lors de la connexion à une API au format Json. Au fait, si vous gérez Json en Java, vous devrez inclure certaines bibliothèques, mais je pense que certaines sont inutiles, donc je les ajouterai dès que je les comprendrai. Les éléments suivants sont actuellement inclus.

Si vous avez des suggestions ou des questions dans cet article, je vous serais reconnaissant de bien vouloir commenter.

Recommended Posts

Essayez d'utiliser l'API au format JSON en Java
Essayez d'utiliser RocksDB avec Java
Essayez d'utiliser l'API Cloud Vision de GCP en Java
Essayez d'utiliser l'analyse syntaxique de l'API COTOHA en Java
J'ai essayé d'utiliser l'API Elasticsearch en Java
Lire JSON en Java
Formater XML en Java
API Zabbix en Java
POST JSON en Java
Créer JSON en Java
◆ Essayez d'appeler l'API au format SpringBoot + gradle REST + JSON
ChatWork4j pour l'utilisation de l'API ChatWork en Java
[Java] Création d'API à l'aide de Jerjey (Jax-rs) avec eclipse
Essayez d'utiliser Sourcetrail (version win) avec du code Java
Essayez d'utiliser Sourcetrail (version macOS) avec du code Java
Convertir JSON et YAML en Java (en utilisant Jackson et SnakeYAML)
Essayez de gratter en utilisant Java [Note]
Essayez d'appeler JavaScript en Java
Essayez de développer Spresense avec Java (1)
Essayez le type fonctionnel en Java! ①
API Java Stream en 5 minutes
POST Json en Java ~ HttpURLConnection ~
Essayez le hooking global en Java à l'aide de la bibliothèque JNativeHook
Sérialisation / désérialisation Json dans Java 1.4
Journaliser la sortie au format Json en utilisant lograge / lograge-sql avec RubyOnRails
Authentifiez 3 paramètres ou plus au format JSON à l'aide de Spring Security
[Java] "T" est inclus dans le type de date JSON dans la réponse de l'API
[Java] Essayez de modifier les éléments de la chaîne Json à l'aide de la bibliothèque
Opération Elasticsearch via l'API REST à l'aide d'Apache HttpClient en Java
Traduire à l'aide de l'API de texte Microsoft Translator en Java (japonais → anglais)
Conseils d'utilisation de Salesforce SOAP et de l'API Bulk en Java
Exporter un problème à l'aide de l'API Java de JIRA
Chiffrer à l'aide du chiffrement RSA en Java
Essayez d'exécuter Selenuim 3.141.59 avec eclipse (java)
Essayez d'utiliser Redis avec Java (jar)
Générer l'URL de l'API CloudStack en Java
Essayez une expression If en Java
Hit l'API de Zaim (OAuth 1.0) en Java
J'ai essayé d'utiliser l'API Java8 Stream
Analyser l'analyse syntaxique de l'API COTOHA en Java
[Java] Essayez de mettre en œuvre à l'aide de génériques
Connexion HTTPS utilisant tls1.2 dans Java 6
J'ai essayé d'utiliser JWT en Java
Essayez d'exécuter AWS X-Ray en Java
Essayez d'implémenter Yuma en Java
Essayez d'utiliser le traçage de méthode IBM Java
JPA (API de persistance Java) dans Eclipse
Essayez d'utiliser le SDK Java d'Hyperledger Iroha
[Java] Où avez-vous essayé d'utiliser java
Essayez de transmettre des valeurs de Java Servlet à l'application iPhone à l'aide de JSON
[Android] Convertissez Map en JSON à l'aide de GSON avec Kotlin et Java
Essayez d'utiliser le framework Java Nablarch [Application Web]
Implémenter l'autorisation API Gateway Lambda dans Java Lambda
Essayez de résoudre Project Euler en Java
Traitement des données à l'aide de l'API de flux de Java 8
Étude de Java 8 (API de date dans le package java.time)
Essayez d'implémenter l'ajout n-aire en Java
Appelez l'API de notification Windows en Java