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

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

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

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

JavaScript

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

Q&A

解決済

1回答

1237閲覧

js: keyにカンマが含まれているjsonを扱いたい

taisuke-salty

総合スコア6

JSON

JSON(JavaScript Object Notation)は軽量なデータ記述言語の1つである。構文はJavaScriptをベースとしていますが、JavaScriptに限定されたものではなく、様々なソフトウェアやプログラミング言語間におけるデータの受け渡しが行えるように設計されています。

JavaScript

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

0グッド

1クリップ

投稿2021/11/06 10:42

Web APIで気象情報を取得して利用しようとしています。
つかっているAPIでは、以下のjsonで気象情報を取得できます。

json

1 "locations":{ 2 "YOKOHAMA,JA":{ 3 "values":[ 4 0:{ 5 "temp":59.3 6 "datetimeStr":"2019-01-01T08:00:00-05:00" 7 "conditions":"Partially cloudy" 8 } 9 ] 10 } 11 }

axiosを使用して上記のjsonを取得すると、自動でjsのオブジェクトに変換されていた(?)ことを確認したので、
そのオブジェクトから最下層のキー:conditionsの値を取得するため、以下のコードを書きました。

js

1 2locations.YOKOHAMA,JA.values[0].conditions

すると、以下のエラーが出ました。

Uncaught (in promise) ReferenceError: JA is not defined

「YOKOHAMA,JA」をキーとして認識できていないということだと思うのですが、どのようにしたら値を取得できるでしょうか。

実際のコードは以下の通りです。

js

1 2 import axios from "axios"; 3 4 const options = { 5 method: 'GET', 6 url: 'https://xxxx', //APIのURL 7 params: { 8 startDateTime: '2021-11-04T00:00:00', 9 aggregateHours: '24', 10 location: 'YOKOHAMA,JA', 11 endDateTime: '2021-11-05T00:00:00', 12 unitGroup: 'metric', 13 dayStartTime: '8:00:00', 14 contentType: 'json', 15 dayEndTime: '17:00:00', 16 shortColumnNames: '0' 17 }, 18 headers: { 19 'x-rapidapi-key': xxxxxx, //API key 20 'x-rapidapi-host': xxxxxx //API Host 21 } 22 }; 23 24 const WeatherRequest = () => { 25 return axios.request(options) 26 .then(function (response) { 27 console.log(typeof(response.data)) //ここでobjectであることを確認 28 console.log(response.data) //ここでYOKOHAMA,JAがキーとなっていることを確認 29 return response.data; 30 }) 31 .catch(function (error) { 32 console.error(error); 33 }); 34} 35 36export default WeatherRequest

js

1import WeatherRequest from "../lib/api_visualCrossingWeather" 2 3const weather = WeatherRequest() 4weather.then((res) => { 5 console.log(res.locations.YOKOHAMA,JA.values[0].weathertype) //ここでエラー 6})

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

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

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

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

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

guest

回答1

0

ベストアンサー

locations['YOKOHAMA,JA'].values[0].conditions です。

投稿2021/11/06 11:09

int32_t

総合スコア21097

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.45%

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

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

質問する

関連した質問