java
in maven
gson version 2.8.6 used Site with explanation https://qiita.com/naoi/items/6b184700b2a41fb46356
Use okhttp version 3.7.0 Explanation site 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 Official page https://developers.google.com/books/
This time, the code read by isbn with the barcode reader is sent as a request, so the code below is used.
https://www.googleapis.com/books/v1/volumes?q=isbn:Isbn code at the back
//It looks like below
https://www.googleapis.com/books/v1/volumes?q=isbn:9784844336778
I'm not sure to be honest If there is a way to understand the hierarchy, please post it
// 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": "A refreshing introduction to Java Practical Edition 2nd Edition",
        "authors": [
          "Kiyotaka Nakayama"
        ],
        "publisher": "Impress Corporation",
        "publishedDate": "2014-09-22",
        "description": "A revised version of Java 8's featured features such as lambda expressions and date APIs has been expanded, and agile-related and design patterns have been thoroughly strengthened! As with the sister book "Introduction to Java", the explanation will proceed while answering "Why?" Firmly, so knowledge essential for mastering Java at work, such as regular expressions, collections, database linkage, refactoring, parallel processing, etc. However, it is refreshing, fun, and easy to learn. Recommended for those who have understood the basic grammar and object-oriented concepts and want to take it even further. Issue",
        "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": "A revised version of Java 8's featured features such as lambda expressions and date APIs has been expanded, and agile-related and design patterns have been thoroughly strengthened! Like the sister book "Introduction to Java", "Why?"..."
      }
    }
  ]
}
https://qiita.com/riversun/items/cdd990e96c2bbf9cb043 On this page, I referred to Automatically generate model class (pojo) using jsonschema2pojo.
The contents of the Model class
@SerializeName ("name") @Expose public type name
Since items is "items": [], it will be List 
The model class is automatically generated, but it may be insufficient, so please make the one that is not generated by yourself.
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;
        //Hold json
        String json = "";
        OkHttpClient okHttpClient;
        okHttpClient = new OkHttpClient();
        Request.Builder builder = new Request.Builder();
        //Insert the address to send the request with url
        builder.url(url + isbn);
        Request request = builder.build();
        Response response = null;
        try {
            response = okHttpClient.newCall(request).execute();
            //I have the json information returned from the web api as mentioned above on the json here
            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;
        //When title is written from model class
        //items class is List<Item>Because it is a type.get()Attach
        System.out.println(models.items.get(0).volumeInfo.title);//title
        //When the model class is changed to the volumeinfo class and displayed
        System.out.println("title: "    + volumeInfo.title);//title
        System.out.println("author: "   + volumeInfo.authors);//author
        System.out.println("Publication date: "   + volumeInfo.publishedDate);//publishedDate
        System.out.println("the publisher: "   + volumeInfo.publisher);//publisher
        System.out.println("List price:"      + listPrice.amount);
        System.out.println("Description:"     + volumeInfo.description);//description
        System.out.println("number of pages:" + volumeInfo.pageCount);//pageCount
        System.out.println("Small thumbnail:" + imageLinks.smallThumbnail);//smallThumbnail
        System.out.println("thumbnail:"         + imageLinks.thumbnail);//thumbnail
    }
}
I was able to go to the feeling
java
in maven
Use okhttp version 3.7.0 Explanation site https://square.github.io/okhttp/
jackson
jackson-core version: 2.10.0 jackson-annotations version: 2.10.0 jackson-databind version: 2.10.0
Is put in
  <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 auto-generated method stub
        Long isbn = 9784295007807L;
        //Hold json
        String json ="";
        //Book title
        String title = "";
        //author
        String author = "";
        //Publication date
        Date publishedDate = null;
        String day = "";
        //the publisher
        String publisher = "";
        //List price
        Integer listPrice = null;
        //Explanatory text
        String description = "";
        //number of pages
        Integer pageCount = null;
        //small thumbnail
        String smallThumbnail ="";
        //thumbnail
        String thumbnail = "";
        OkHttpClient okHttpClient;
        okHttpClient = new OkHttpClient();
        Request.Builder builder = new Request.Builder();
        //Insert the address to send the request with 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();
        }
        //Display the contents of json
        System.out.println(json);
        //Processing to take out the contents of json from here and display it
        ObjectMapper mapper = new ObjectMapper();
        try {
            JsonNode node = mapper.readTree(json);
             //get("value")Value is json"title": "A refreshing introduction to Java Practical Edition 2nd Edition"
             //The title part will be the value
             //Since title is a String type, at the end.asText();Attach
             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();
             //Received as String day to convert publication date to Date type
             day = node.get("items").get(0).get("volumeInfo").get("publishedDate").textValue();
             //Convert string to sql type Date
             publishedDate =  Date.valueOf(day);
             //listPrice is an int type, so at the end.asInt();Attach
             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("the publisher: "+publisher);
        System.out.println("Publication date: " + publishedDate);
        System.out.println("List price: " + listPrice + "Circle");
        System.out.println("Explanatory text: " + description);
        System.out.println("number of pages: " + pageCount);
        System.out.println("Small thumbnail: " + smallThumbnail);
        System.out.println("thumbnail: " +thumbnail);
    }
}
I was able to do it like that
Recommended Posts