2017-07-05 10 views
0

天気APIをタップするこの非同期関数は、APIから2つの情報を取得したいだけです.F &の温度C. API_Keyは削除されましたが、必要に応じてサイトにアクセスできます。wunderground APIからjsonデータにアクセスしますか?

私はconsole.log(応答)文のためにjsonオブジェクトを受け取っていることを確認できますが、このような深く埋め込まれたjson表記でこれらのデータポイントにアクセスする方法はわかりません。私は私の質問を推測

は、私は私がresponse.observation_location.fullような何かをしようと思いました完全な都市名の「フル」と言うにアクセスしたい場合であるが、それは動作しません...

ヘルプ?ここで

async loadWeather() { 
     // let zip = this.args.zip || 97239; 
     let response = await fetch(`http://api.wunderground.com/api/API_KEY/conditions/q/CA/San_Francisco.json`); 
     console.log(response); 
     this.weather = await response.json(); 
     // setTimeout(() => { this.loadWeather(); }, 2000); 
    } 

は、応答JSONの出力の一部です:

{ 
    "response": { 
     "version": "0.1", 
     "termsofService": "http://www.wunderground.com/weather/api/d/terms.html", 
     "features": { 
      "conditions": 1 
     } 
    }, 
    "current_observation": { 
     "image": { 
      "url": "http://icons.wxug.com/graphics/wu2/logo_130x80.png", 
      "title": "Weather Underground", 
      "link": "http://www.wunderground.com" 
     }, 
     "display_location": { 
      "full": "San Francisco, CA", 
      "city": "San Francisco", 
      "state": "CA", 
      "state_name": "California", 
      "country": "US", 
      "country_iso3166": "US", 
      "zip": "94102", 
      "magic": "1", 
      "wmo": "99999", 
      "latitude": "37.77999878", 
      "longitude": "-122.41999817", 
      "elevation": "60.0" 
     }, 
     "observation_location": { 
      "full": "SOMA, San Francisco, California", 
      "city": "SOMA, San Francisco", 
      "state": "California", 
      "country": "US", 
      "country_iso3166": "US", 
      "latitude": "37.778488", 
      "longitude": "-122.408005", 
      "elevation": "23 ft" 
     }, 

私は、ネストされたデータ値にアクセスするためにconsole.log(response["current_observation"])をやって試してみましたが、それdoesntのは、それはundefinedを返しますように動作するように見えます。

+0

あなたは受け取っている応答は何ですか? –

+0

はこのページの例とほぼ同じです https://www.wunderground.com/weather/api/d/docs – Chris

答えて

1

は、[OK]を私は自分の問題を解決しますが、記録のために:必要な

応答resonse.json()

を介して、JSONに変換すると

this.weather = await response.json(); 
console.log(this.weather["current_observation"]["temp_f"]); 
console.log(this.weather["current_observation"]["temp_c"]); 
を予想通り、私はプロパティにアクセスすることができます
関連する問題