Beachten Sie, dass die Produktsuch-API von Yahoo! neue Spezifikationen enthält. https://developer.yahoo.co.jp/webapi/shopping/shopping/v3/itemsearch.html
Die Struktur von JSON hat sich geändert, da Suchwörter codiert werden müssen. Wir werden Jackson verwenden, um JSON zu handhaben. Bitte überprüfen Sie die Einführung selbst.
Als Änderung gegenüber der alten Spezifikation ist eine UTF-8-Codierung erforderlich.
java
//Anwendungs-ID
final String appID = "Anwendungs-ID";
//Suchwort UTF-8 Kodierung
String query = request.getParameter("searchWord");
String encodedQuery = URLEncoder.encode(query, "UTF-8");
//URL-Erstellung
String url = "https://shopping.yahooapis.jp/ShoppingWebService/V3/itemSearch"
+ "?appid=" + appID + "&query=" + encodedQuery;
URL conUrl = new URL(url);
//Verbinden
HttpURLConnection con = (HttpURLConnection)conUrl.openConnection();
con.connect();
Beachten Sie, dass sich die Struktur von JSON von den alten Spezifikationen unterscheidet. Dieses Mal werden wir die Top 10 Produktnamen und Preise aus den Suchergebnissen extrahieren.
java
//Lesen Sie die JSON-Zeichenfolge
BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream()));
String json = br.readLine();
br.close();
//Konvertieren Sie die JSON-Zeichenfolge in JsonNode
ObjectMapper mapper = new ObjectMapper();
JsonNode node = mapper.readTree(json);
//ArrayList, in der JavaBeans gespeichert sind
ArrayList<DataBeans> list = new ArrayList<>();
//Extrahieren Sie Informationen für 10 Elemente und speichern Sie sie in der Liste
for(int i = 0; i < 10; i++){
//Da der Wert von Treffern ein Array ist, geben Sie die Elementnummer mit einer Ganzzahl an.
String name = node.get("hits").get(i).get("name").textValue();
int price = node.get("hits").get(i).get("price").asInt();
//Legen Sie Informationen in JavaBeans fest
DataBeans bean = new DataBeans();
bean.setName(name);
bean.setPrice(price);
list.add(bean);
}
request.setAttribute("resultData", list);
request.getRequestDispatcher("searchResult.jsp").forward(request, response);
Recommended Posts