java
in maven
gson version 2.8.6 verwendet Seite mit Erklärung https://qiita.com/naoi/items/6b184700b2a41fb46356
Verwenden Sie okhttp Version 3.7.0 Erklärungsseite 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 Offizielle Seite https://developers.google.com/books/
Dieses Mal wird der von isbn mit dem Barcodeleser gelesene Code als Anfrage gesendet, sodass der folgende Code verwendet wird.
https://www.googleapis.com/books/v1/volumes?q=isbn:Isbn-Code auf der Rückseite
//Es sieht aus wie unten
https://www.googleapis.com/books/v1/volumes?q=isbn:9784844336778
Ich bin mir nicht sicher, ob ich ehrlich bin Wenn es eine Möglichkeit gibt, die Hierarchie zu verstehen, posten Sie sie bitte
// 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": "Eine erfrischende Einführung in Java Practical Edition 2nd Edition",
"authors": [
"Kiyotaka Nakayama"
],
"publisher": "Impress Co., Ltd.",
"publishedDate": "2014-09-22",
"description": "Einführung einer überarbeiteten Version, die die Erklärung der bemerkenswerten Funktionen von Java 8 wie Lambda-Ausdruck und Datums-API ergänzt und die Erklärung von agilen verwandten Mustern und Designmustern gründlich stärkt! Wie beim Schwesterbuch "Einführung in Java" wird die Erklärung fortgesetzt, während "Warum?" Fest beantwortet wird. Daher sind Kenntnisse, die für die Beherrschung von Java bei der Arbeit unerlässlich sind, wie reguläre Ausdrücke, Sammlungen, Datenbankverknüpfungen, Refactoring, Parallelverarbeitung usw. Es ist jedoch erfrischend, macht Spaß und ist leicht zu erlernen. Empfohlen für diejenigen, die die grundlegenden grammatikalischen und objektorientierten Konzepte verstanden haben und noch weiter gehen möchten. Problem",
"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": "Einführung einer überarbeiteten Version, die die Erklärung der bemerkenswerten Funktionen von Java 8 wie Lambda-Ausdruck und Datums-API ergänzt und die Erklärung von agilen verwandten Mustern und Designmustern gründlich stärkt! Wie das Schwesterbuch "Einführung in Java", "Warum?"..."
}
}
]
}
https://qiita.com/riversun/items/cdd990e96c2bbf9cb043 Auf dieser Seite habe ich auf das automatische Generieren einer Modellklasse (pojo) mit jsonschema2pojo verwiesen.
Der Inhalt der Model-Klasse
@SerializeName ("Name") @Expose öffentlicher Typname
Da items "items": [] ist, ist es List
Die Modellklasse wird automatisch generiert, ist jedoch möglicherweise nicht ausreichend. Erstellen Sie daher diejenige, die nicht von Ihnen selbst generiert wurde.
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) {
//isbn code
Long isbn = 9784844336778L;
//Halten Sie json
String json = "";
OkHttpClient okHttpClient;
okHttpClient = new OkHttpClient();
Request.Builder builder = new Request.Builder();
//Geben Sie die Adresse ein, um die Anfrage mit URL zu senden
builder.url(url + isbn);
Request request = builder.build();
Response response = null;
try {
response = okHttpClient.newCall(request).execute();
//Ich habe die JSON-Informationen von der Web-API zurückgegeben, wie oben auf JSON hier beschrieben
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;
//Wenn der Titel aus der Modellklasse geschrieben wird
//Die Elementklasse ist Liste<Item>Weil es ein Typ ist.get()Anfügen
System.out.println(models.items.get(0).volumeInfo.title);//title
//Wenn die Modellklasse in die volumeinfo-Klasse geändert und angezeigt wird
System.out.println("title: " + volumeInfo.title);//title
System.out.println("author: " + volumeInfo.authors);//author
System.out.println("Veröffentlichungsdatum: " + volumeInfo.publishedDate);//publishedDate
System.out.println("der Herausgeber: " + volumeInfo.publisher);//publisher
System.out.println("Listenpreis:" + listPrice.amount);
System.out.println("Erläuterung:" + volumeInfo.description);//description
System.out.println("Seitenzahl:" + volumeInfo.pageCount);//pageCount
System.out.println("Kleines Vorschaubild:" + imageLinks.smallThumbnail);//smallThumbnail
System.out.println("Miniaturansicht:" + imageLinks.thumbnail);//thumbnail
}
}
Ich konnte zu dem Gefühl gehen
java
in maven
Verwenden Sie okhttp Version 3.7.0 Erklärungsseite https://square.github.io/okhttp/
jackson
Jackson-Core-Version: 2.10.0 jackson-annotations version: 2.10.0 Jackson-Databind-Version: 2.10.0
Wird eingesetzt
<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 automatisch generierter Methodenstub
Long isbn = 9784295007807L;
//Halten Sie json
String json ="";
//Buchtitel
String title = "";
//Autor
String author = "";
//Veröffentlichungsdatum
Date publishedDate = null;
String day = "";
//der Herausgeber
String publisher = "";
//Listenpreis
Integer listPrice = null;
//Erläuterungstext
String description = "";
//Seitenzahl
Integer pageCount = null;
//kleines Vorschaubild
String smallThumbnail ="";
//Miniaturansicht
String thumbnail = "";
OkHttpClient okHttpClient;
okHttpClient = new OkHttpClient();
Request.Builder builder = new Request.Builder();
//Geben Sie die Adresse ein, um die Anfrage mit URL zu senden
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();
}
//Zeigen Sie den Inhalt von json an
System.out.println(json);
//Verarbeitung, um den Inhalt von json von hier zu extrahieren und anzuzeigen
ObjectMapper mapper = new ObjectMapper();
try {
JsonNode node = mapper.readTree(json);
//get("value")Wert ist von json"title": "Eine erfrischende Einführung in Java Practical Edition 2nd Edition"
//Der Titelteil ist der Wert
//Da title am Ende ein String-Typ ist.asText();Anfügen
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();
//Als String-Tag empfangen, um das Veröffentlichungsdatum in den Datumstyp umzuwandeln
day = node.get("items").get(0).get("volumeInfo").get("publishedDate").textValue();
//Konvertieren Sie die Zeichenfolge in den SQL-Typ Datum
publishedDate = Date.valueOf(day);
//listPrice ist vom Typ int, also am Ende.asInt();Anfügen
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("der Herausgeber: "+publisher);
System.out.println("Veröffentlichungsdatum: " + publishedDate);
System.out.println("Listenpreis: " + listPrice + "Kreis");
System.out.println("Erläuterungstext: " + description);
System.out.println("Seitenzahl: " + pageCount);
System.out.println("Kleines Vorschaubild: " + smallThumbnail);
System.out.println("Miniaturansicht: " +thumbnail);
}
}
Ich konnte es so machen
Recommended Posts