質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

Q&A

解決済

1回答

1819閲覧

楽天WebAPIで取得した本のデータを整形・出力したい

marutto

総合スコア32

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

配列

配列は、各データの要素(値または変数)が連続的に並べられたデータ構造です。各配列は添え字(INDEX)で識別されています。

0グッド

0クリップ

投稿2019/12/20 03:14

下記の楽天APIを用いて本の情報を取得、表示しようとしています。

受け取ったJSONをパースし、ページに出力したいのですが、うまくいきません。

・参考資料
楽天API詳細
APIをテストできるページ

上記を元にaxiosを使ってコードを書いたのが以下です。

const actions = { async doSearch({ commit }, keyword) { const APIkey = "xxxxxxxxxxxxxxxxxxxxxxx"; const limit = 3; const url = `https://app.rakuten.co.jp/services/api/IchibaItem/Search/20170706?format=json&formatVersion=2&keyword=${keyword}&hits=${limit}&applicationId=${APIkey}`; const results = await axios.get(url); // 通信ここまで console.log("results fetched"); // JSON形式なのでオブジェクト型に変換 const data = JSON.parse(results); // 各配列内の商品名(itemName)を取り出す const name = data.Items.map(o => o.itemName); for (var i = 0; i < name.length; i++) { console.log(name[i]); } const imageUrls = data.map(o => o.mediumImageUrls.imageUrl); console.log(imageUrls);

formatVersionというパラメータ設定で、mapも使えるようにしたつもりなのですが、name,imageURLsの出力ができずにいます。

お手数おかけしますが、アドバイスよろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

オブジェクトの肩が違うとかはないでしょうか?
こちらでapiを叩いてみると、

TypeScript

1type 返ってくるObj = { 2 count:number, 3 page:number, 4 ...()... 5 Items:[ 6 Item: { 7 title:string, 8 ...()... 9 smallImageUrl:string, 10 mediumImageUrl:string, 11 largeImageUrl:string, 12 ...()... 13 } 14 ] 15}

となっていましたので、本の名前と画像を持ってきたいのであれば

javascript

1const name = data.Items.map(o => o.Item.title); 2 3const imageUrls = data.map(o => o.Item.mediumImageUrl);

とするのが正しいように思えます。

投稿2019/12/20 03:31

編集2019/12/20 03:32
shinyaigeek

総合スコア112

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

marutto

2019/12/20 09:55

回答ありがとうございます。 返ってきた値をキチンと見直したら、情報の取り出し方が分かりました! APIから送られてきた情報はdataというプロパティに入っていて、さらにその中にItemsが入っているのですね。 アドバイスのお陰で気付けました。ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問