java
à maven
gson version 2.8.6 utilisée Site avec explication https://qiita.com/naoi/items/6b184700b2a41fb46356
Utilisez okhttp version 3.7.0 Site d'explication https://square.github.io/okhttp/
<dependency>
<groupId>com.google.code.gson</groupId>
<artifactId>gson</artifactId>
<version>2.8.6</version>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>3.7.0</version>
</dependency>
google books api Page Officielle https://developers.google.com/books/
Cette fois, le code lu par isbn avec le lecteur de code barre sera envoyé en tant que demande, donc le code ci-dessous sera utilisé.
https://www.googleapis.com/books/v1/volumes?q=isbn:Code Isbn à l'arrière
//Cela ressemble à ci-dessous
https://www.googleapis.com/books/v1/volumes?q=isbn:9784844336778
Je ne suis pas sûr d'être honnête S'il existe un moyen de comprendre la hiérarchie, veuillez la publier
// 20200101165936
// https://www.googleapis.com/books/v1/volumes?q=isbn:9784844336778
{
"kind": "books#volumes",
"totalItems": 1,
"items": [
{
"kind": "books#volume",
"id": "FQKOBAAAQBAJ",
"etag": "YZLyBEypyf4",
"selfLink": "https://www.googleapis.com/books/v1/volumes/FQKOBAAAQBAJ",
"volumeInfo": {
"title": "Une introduction rafraîchissante à Java Practical Edition 2nd Edition",
"authors": [
"Kiyotaka Nakayama"
],
"publisher": "Impress Co., Ltd.",
"publishedDate": "2014-09-22",
"description": "Présentation d'une version révisée qui complète l'explication des fonctionnalités notables de Java 8 telles que l'expression lambda et l'API de date, et renforce complètement l'explication des modèles de conception et liés à l'agilité! Comme pour le livre soeur "Introduction à Java", l'explication se poursuivra en répondant "Pourquoi?" Fermement, donc des connaissances indispensables pour maîtriser Java au travail, telles que les expressions régulières, les collections, la liaison de bases de données, le refactoring, le traitement parallèle, etc. Cependant, il est rafraîchissant, amusant et facile à apprendre. Recommandé pour ceux qui ont compris la grammaire de base et les concepts orientés objet et qui souhaitent aller encore plus loin. Problème",
"industryIdentifiers": [
{
"type": "ISBN_13",
"identifier": "9784844336778"
},
{
"type": "ISBN_10",
"identifier": "4844336770"
}
],
"readingModes": {
"text": false,
"image": true
},
"pageCount": 628,
"printType": "BOOK",
"categories": [
"Computers"
],
"maturityRating": "NOT_MATURE",
"allowAnonLogging": true,
"contentVersion": "2.3.0.0.preview.1",
"panelizationSummary": {
"containsEpubBubbles": false,
"containsImageBubbles": false
},
"imageLinks": {
"smallThumbnail": "http://books.google.com/books/content?id=FQKOBAAAQBAJ&printsec=frontcover&img=1&zoom=5&edge=curl&source=gbs_api",
"thumbnail": "http://books.google.com/books/content?id=FQKOBAAAQBAJ&printsec=frontcover&img=1&zoom=1&edge=curl&source=gbs_api"
},
"language": "ja",
"previewLink": "http://books.google.co.jp/books?id=FQKOBAAAQBAJ&printsec=frontcover&dq=isbn:9784844336778&hl=&cd=1&source=gbs_api",
"infoLink": "https://play.google.com/store/books/details?id=FQKOBAAAQBAJ&source=gbs_api",
"canonicalVolumeLink": "https://play.google.com/store/books/details?id=FQKOBAAAQBAJ"
},
"saleInfo": {
"country": "JP",
"saleability": "FOR_SALE",
"isEbook": true,
"listPrice": {
"amount": 2596.0,
"currencyCode": "JPY"
},
"retailPrice": {
"amount": 2336.0,
"currencyCode": "JPY"
},
"buyLink": "https://play.google.com/store/books/details?id=FQKOBAAAQBAJ&rdid=book-FQKOBAAAQBAJ&rdot=1&source=gbs_api",
"offers": [
{
"finskyOfferType": 1,
"listPrice": {
"amountInMicros": 2596000000,
"currencyCode": "JPY"
},
"retailPrice": {
"amountInMicros": 2336000000,
"currencyCode": "JPY"
}
}
]
},
"accessInfo": {
"country": "JP",
"viewability": "PARTIAL",
"embeddable": true,
"publicDomain": false,
"textToSpeechPermission": "ALLOWED",
"epub": {
"isAvailable": false
},
"pdf": {
"isAvailable": true,
"acsTokenLink": "http://books.google.co.jp/books/download/%E3%82%B9%E3%83%83%E3%82%AD%E3%83%AA%E3%82%8F%E3%81%8B%E3%82%8BJava%E5%85%A5%E9%96%80_%E5%AE%9F%E8%B7%B5-sample-pdf.acsm?id=FQKOBAAAQBAJ&format=pdf&output=acs4_fulfillment_token&dl_type=sample&source=gbs_api"
},
"webReaderLink": "http://play.google.com/books/reader?id=FQKOBAAAQBAJ&hl=&printsec=frontcover&source=gbs_api",
"accessViewStatus": "SAMPLE",
"quoteSharingAllowed": false
},
"searchInfo": {
"textSnippet": "Présentation d'une version révisée qui complète l'explication des fonctionnalités notables de Java 8 telles que l'expression lambda et l'API de date, et renforce complètement l'explication des modèles de conception et liés à l'agilité! Comme le livre jumeau "Introduction à Java", "Pourquoi?"..."
}
}
]
}
https://qiita.com/riversun/items/cdd990e96c2bbf9cb043 Sur cette page, j'ai fait référence à la génération automatique d'une classe de modèle (pojo) à l'aide de jsonschema2pojo.
Le contenu de la classe Model
@SerializeName ("nom") @Expose nom de type public
Puisque les éléments sont des "éléments": [], ce sera List
La classe de modèle est générée automatiquement, mais elle peut être insuffisante, veuillez donc créer celle qui n'est pas générée par vous-même.
package main;
import java.io.IOException;
import java.util.List;
import com.example.qson.Item;
import com.example.qson.ListPrice;
import com.example.qson.Model;
import com.example.qson.SaleInfo;
import com.example.qson.VolumeInfo;
import com.google.gson.Gson;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
public class main {
public static final String url = "https://www.googleapis.com/books/v1/volumes?q=isbn:";
public static void main(String[] args) {
//code isbn
Long isbn = 9784844336778L;
//Tenez json
String json = "";
OkHttpClient okHttpClient;
okHttpClient = new OkHttpClient();
Request.Builder builder = new Request.Builder();
//Insérez l'adresse pour envoyer la demande avec l'url
builder.url(url + isbn);
Request request = builder.build();
Response response = null;
try {
response = okHttpClient.newCall(request).execute();
//J'ai les informations json renvoyées par l'API Web comme décrit ci-dessus sur json ici
json = response.body().string();
} catch (IOException e) {
e.printStackTrace();
}
Gson gson = new Gson();
Model models = gson.fromJson(json, Model.class);
List<Item> items2 = models.items;
VolumeInfo volumeInfo = items2.get(0).volumeInfo;
ImageLinks imageLinks = volumeInfo.imageLinks;
SaleInfo saleInfo = items2.get(0).saleInfo;
ListPrice listPrice = saleInfo.listPrice;
//Lorsque le titre est écrit à partir de la classe de modèle
//la classe d'éléments est List<Item>Parce que c'est un type.get()Attacher
System.out.println(models.items.get(0).volumeInfo.title);//title
//Lorsque la classe de modèle est remplacée par la classe volumeinfo et affichée
System.out.println("title: " + volumeInfo.title);//title
System.out.println("author: " + volumeInfo.authors);//author
System.out.println("Date de publication: " + volumeInfo.publishedDate);//publishedDate
System.out.println("l'éditeur: " + volumeInfo.publisher);//publisher
System.out.println("Liste des prix:" + listPrice.amount);
System.out.println("La description:" + volumeInfo.description);//description
System.out.println("nombre de pages:" + volumeInfo.pageCount);//pageCount
System.out.println("Petite vignette:" + imageLinks.smallThumbnail);//smallThumbnail
System.out.println("la vignette:" + imageLinks.thumbnail);//thumbnail
}
}
J'ai pu aller au sentiment
java
à maven
Utilisez okhttp version 3.7.0 Site d'explication https://square.github.io/okhttp/
jackson
version jackson-core: 2.10.0 version de jackson-annotations: 2.10.0 version jackson-databind: 2.10.0
Est mis en
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId>
<version>2.10.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>2.10.0</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.10.0</version>
</dependency>
<dependency>
<groupId>com.squareup.okhttp3</groupId>
<artifactId>okhttp</artifactId>
<version>3.7.0</version>
</dependency>
import java.io.IOException;
import java.sql.Date;
import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
public class main {
public static final String url = "https://www.googleapis.com/books/v1/volumes?q=isbn:";
public static void main(String[] args) {
//TODO talon de méthode généré automatiquement
Long isbn = 9784295007807L;
//Tenez json
String json ="";
//Titre de livre
String title = "";
//auteur
String author = "";
//Date de publication
Date publishedDate = null;
String day = "";
//l'éditeur
String publisher = "";
//Liste des prix
Integer listPrice = null;
//Texte explicatif
String description = "";
//nombre de pages
Integer pageCount = null;
//petite vignette
String smallThumbnail ="";
//la vignette
String thumbnail = "";
OkHttpClient okHttpClient;
okHttpClient = new OkHttpClient();
Request.Builder builder = new Request.Builder();
//Insérez l'adresse pour envoyer la demande avec l'url
builder.url(url + isbn);
Request request = builder.build();
Response response = null;
try {
response = okHttpClient.newCall(request).execute();
json = response.body().string();
} catch (IOException e) {
e.printStackTrace();
}
//Afficher le contenu de json
System.out.println(json);
//Traitement pour retirer le contenu de json d'ici et l'afficher
ObjectMapper mapper = new ObjectMapper();
try {
JsonNode node = mapper.readTree(json);
//get("value")La valeur est de json"title": "Une introduction rafraîchissante à Java Practical Edition 2nd Edition"
//La partie titre sera la valeur
//Puisque le titre est un type de chaîne, à la fin.asText();Attacher
title = node.get("items").get(0).get("volumeInfo").get("title").asText();
author = node.get("items").get(0).get("volumeInfo").get("authors").get(0).asText();
publisher = node.get("items").get(0).get("volumeInfo").get("publisher").asText();
//Reçu sous forme de jour de chaîne pour convertir la date de publication en type Date
day = node.get("items").get(0).get("volumeInfo").get("publishedDate").textValue();
//Convertir la chaîne en type SQL Date
publishedDate = Date.valueOf(day);
//listPrice est de type int, donc à la fin.asInt();Attacher
listPrice = node.get("items").get(0).get("saleInfo").get("listPrice").get("amount").asInt();
description = node.get("items").get(0).get("volumeInfo").get("description").asText();
pageCount = node.get("items").get(0).get("volumeInfo").get("pageCount").asInt();
smallThumbnail = node.get("items").get(0).get("volumeInfo").get("imageLinks").get("smallThumbnail").asText();
thumbnail = node.get("items").get(0).get("volumeInfo").get("imageLinks").get("thumbnail").asText();
} catch (IOException e) {
e.printStackTrace();
}
System.out.println("title: " +title);
System.out.println("author: " +author);
System.out.println("l'éditeur: "+publisher);
System.out.println("Date de publication: " + publishedDate);
System.out.println("Liste des prix: " + listPrice + "Cercle");
System.out.println("Texte explicatif: " + description);
System.out.println("nombre de pages: " + pageCount);
System.out.println("Petite vignette: " + smallThumbnail);
System.out.println("la vignette: " +thumbnail);
}
}
J'ai pu le faire comme ça
Recommended Posts