ベビーサンの記録

勉強したことと思ったことをね

Yahoo!ショッピング商品検索(v3)APIで取得したjsonから利用したい情報だけ取得する方法

Yahoo!ショッピングAPIで商品検索して取得したデータの中から、利用したいデータだけ取得する方法のメモ。

前提

java 14.0.1
jackson 2.9.10
ショッピング:商品検索(v3) - Yahoo!デベロッパーネットワーク
↑は結構単純な内容なので、公式ドキュメントに苦手意識があっても理解しやすいと思います。

jsonデータを取得する

公式で紹介されている、以下のURLをリクエストURLに指定します。

https://shopping.yahooapis.jp/ShoppingWebService/V3/itemSearch?appid=<あなたのアプリケーションID>&query=nike

すると、以下のようなデータが取得できます。
(正確には「結果を読み取ってJsonNodeに変換する処理」を実装する必要がありますが、実装方法については省略します)
また、正確なデータだと文字数多すぎて見にくいので一部省略しています。

{
    "totalResultsAvailable": 482351,
    "request": {
        "query": "nike"
    },
    "hits": [
        {
            "index": 1,
            "name": "Nike ナイキ ウィメンズ エアフォース 1 ",
            "description": "ナイキの顔であり、世界中で絶大な人気を誇るエアフォース1。",
            "url": "https://store.shopping.yahoo.co.jp/topcrept/nike240.html",
            "image": {
                "small": "https://item-shopping.c.yimg.jp/i/c/topcrept_nike240",
                "medium": "https://item-shopping.c.yimg.jp/i/g/topcrept_nike240"
            }
        },
        {
            "index": 2,
            "name": "ナイキ NIKE スニーカー Nike Air Force 1",
            "description": "海外輸入商品となりますので、外箱にキズやヘコみ等がある場合がございます。",
            "url": "https://store.shopping.yahoo.co.jp/topcrept/nike220.html",
            "image": {
                "small": "https://item-shopping.c.yimg.jp/i/c/topcrept_nike220",
                "medium": "https://item-shopping.c.yimg.jp/i/g/topcrept_nike220"
            }
        }
    ]
}

利用したい情報だけ取り出す

JsonNode json = 読み取ったjsonデータ;

// 総検索ヒット件数を取得したい
int allHitCnt = json.get("totalResultsAvailable").asInt();

// 検索クエリを取得したい
String serchedQuery = json.get("request").get("query").asText();

// 検索結果1件目の名前を取得したい
String serchedQuery = json.get("hits").get(0).get.("name").asText();

// 検索結果2件目の画像(小)を取得したい
String serchedQuery = json.get("hits").get(1).get.("image").get("small").asText();

おわりに

jsonはただのデータフォーマットだから、他のAPIから取得したり自作のjsonデータを取得したりする時に応用できるな。
でもまだ課題があって、
jsonNodeオブジェクトのアクセサメソッドget,pash,withの違いと、 asTextとtextValueの違いを調べないと。

参考文献

https://blog.kymmt.com/entry/jackson