YahooショッピングAPIの値取得に関して。

javascript(jquery)でyahooショッピングAPIからデータを取得&表示するサンプルを作成しています。
データはjsonp形式で取得しhtmlに整形して出力するのですが、一部のデータだけ取得できずエラーになってしまいます。
■エラー内容
Uncaught TypeError: Cannot read property 'Medium' of undefined

■yahooショッピングAPIの仕様
http://developer.yahoo.co.jp/webapi/shopping/shopping/v1/itemsearch.html

■作成したソース
var url = yahooショッピングAPIへのリクエストURL
$.getJSON(url , function(data, status){
var item = data.ResultSet[0].Result;
for (var i in item) {
//↓breakpointを設定しこの時点の値を見るとちゃんと値は入っています。
var test = item[i].Image.Medium;
arr_ya_shop.push([
item[i].Name,
item[i].Url,
item[i].Price,
//↓ここで「Medium」がエラーになる。
item[i].Image.Medium
]);
}
〜arr_ya_shopに格納した値の処理〜
});

原因を教えていただけたら幸いです。

回答の条件
  • 1人5回まで
  • 13歳以上
  • 登録:2014/03/23 02:03:18
  • 終了:2014/03/30 02:05:04

回答(2件)

id:Lhankor_Mhy No.1

Lhankor_Mhy回答回数779ベストアンサー獲得回数2312014/03/23 10:09:35

ポイント100pt
  for (var i in item) {

 これが原因ですね。
 for in はすべてのプロパティを拾うので想定していないことになってると思います。ループを追っていくと i には Result などの値も入っており、item['Result'].Image は undefined なのでエラーになっていると思います。

他2件のコメントを見る
id:Lhankor_Mhy

 そういうことになると思います。
 仕様を見ると、totalResultsAvailable:検索数HIT数 という値が返ってくるようなので、それを使ってループさせればいいかと思います。

2014/03/24 09:44:35
id:Lhankor_Mhy

 あ、違いますね。totalResultsReturned:返された値の個数 の方でした。

2014/03/24 09:45:14
id:snow0214 No.2

snow0214回答回数470ベストアンサー獲得回数1162014/03/23 13:03:03

ポイント100pt

作成したソースの下の部分を変更してみてください。

var item = data.ResultSet[0].Result;

var item = data.ResultSet[0].Result.Hit;
id:finnapple

ご回答ありがとうございます。
下記に記載されているレスポンスフィールドをご確認頂きアドバイスをして頂けたかと思います。
> ■yahooショッピングAPIの仕様
> http://developer.yahoo.co.jp/webapi/shopping/shopping/v1/itemsearch.html

私も当初は.Hitを入れていたのですがデータが取得できず、実際のレスポンスフィールドを確認したところHitは不要でした。

2014/03/23 22:16:01

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません