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

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

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

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

Q&A

解決済

1回答

1197閲覧

JSONで取得されるデータの中から、指定の要素を取り出したい

beer

総合スコア19

JSON

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Ajax

Ajaxとは、Webブラウザ内で搭載されているJavaScriptのHTTP通信機能を使って非同期通信を利用し、インターフェイスの構築などを行う技術の総称です。XMLドキュメントを指定したURLから読み込み、画面描画やユーザの操作などと並行してサーバと非同期に通信するWebアプリケーションを実現することができます。

0グッド

1クリップ

投稿2019/01/02 09:17

編集2019/01/02 10:30

JSONから指定の要素を取得する方法がよくわらかないので教えて頂きたいです。

具体的には下記のHTMLとajaxを使い、#titleにJSONのtitle要素を出力したいと考えています。

html

1<p>title</p> 2<div id="title"></div> 3<hr> 4<p>all</p> 5<div id="all"></div> 6 7<script> 8function yt(){ 9var API_KEY = 'xxx'; 10var video_id = "6QNxsnfIP4E"; 11var url = 'https://www.googleapis.com/youtube/v3/videos?id='+video_id+'&part=snippet,contentDetails,statistics,status&key=' + API_KEY; 12$.ajax({ 13 type: 'GET', 14 url: url, 15 dataType: 'json', 16 success: function(data){ 17 18 // JSONの全てを出力→できた 19 var all = JSON.stringify(data,null, " "); 20 $("#all").append(all); 21 22 // JSONのtitleを出力→できない 23 var title = all[1].snippet[2]; // ここで「【RIZIN2018】那須川天心VSメイウェザー(日本語実況)」を取得しているつもり 24 $("#title").append(title); 25 26 } 27}); 28} 29yt(); 30</script>

現状では上記HTMLの#allに下記JSONが出力されまして、この中で出力したいtitle要素とは、16行目の「【RIZIN2018】那須川天心VSメイウェザー(日本語実況)」です。これを、上記HTMLの#titleに出力したいというのが目的です。

json

1{ 2 "kind": "youtube#videoListResponse", 3 "etag": "\"XI7nbFXulYBIpL0ayR_gDh3eu1k/hhLVcZqdXMpUJ4VNRvNIK4ksjhE\"", 4 "pageInfo": { 5 "totalResults": 1, 6 "resultsPerPage": 1 7 }, 8 "items": [ 9 { 10 "kind": "youtube#video", 11 "etag": "\"XI7nbFXulYBIpL0ayR_gDh3eu1k/DyMLz_rApqVo62Sd3TgO_JQ7AR4\"", 12 "id": "6QNxsnfIP4E", 13 "snippet": { 14 "publishedAt": "2018-12-31T14:49:46.000Z", 15 "channelId": "UCWk7Qqskj-_uWJqhNMlRVuQ", 16 "title": "【RIZIN2018】那須川天心VSメイウェザー(日本語実況)", 17 "description": "", 18 "thumbnails": { 19 "default": { 20 "url": "https://i.ytimg.com/vi/6QNxsnfIP4E/default.jpg", 21 "width": 120, 22 "height": 90 23 }, 24 "medium": { 25 "url": "https://i.ytimg.com/vi/6QNxsnfIP4E/mqdefault.jpg", 26 "width": 320, 27 "height": 180 28 }, 29 "high": { 30 "url": "https://i.ytimg.com/vi/6QNxsnfIP4E/hqdefault.jpg", 31 "width": 480, 32 "height": 360 33 } 34 }, 35 "channelTitle": "さまど.", 36 "categoryId": "20", 37 "liveBroadcastContent": "none", 38 "localized": { 39 "title": "【RIZIN2018】那須川天心VSメイウェザー(日本語実況)", 40 "description": "" 41 } 42 }, 43 "contentDetails": { 44 "duration": "PT3M2S", 45 "dimension": "2d", 46 "definition": "hd", 47 "caption": "false", 48 "licensedContent": false, 49 "projection": "rectangular" 50 }, 51 "status": { 52 "uploadStatus": "processed", 53 "privacyStatus": "public", 54 "license": "youtube", 55 "embeddable": true, 56 "publicStatsViewable": true 57 }, 58 "statistics": { 59 "viewCount": "1077124", 60 "likeCount": "2635", 61 "dislikeCount": "509", 62 "favoriteCount": "0", 63 "commentCount": "4092" 64 } 65 } 66 ] 67}

宜しくお願いします!

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

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

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

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

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

guest

回答1

0

ベストアンサー

js

1all.items[0].snippet.title

投稿2019/01/02 09:48

kei344

総合スコア69398

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

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

beer

2019/01/02 10:06

var title = all[1].snippet[2]; ↓ var title = all.items[0].snippet.title; ですよね? これではできませんでした。 もし何かございましたらお願いします。
kei344

2019/01/02 10:20

console.logで確認してみては?もしくは省略しないでJSONを提示してください。 【デバッグに大活躍! JavaScriptのconsole.logで値を表示しよう | 侍エンジニア塾ブログ | プログラミング入門者向け学習情報サイト】 https://www.sejuku.net/blog/27205
beer

2019/01/02 10:49 編集

省略しないJSONを質問文に追記致しました。 よろしければご査収ください。 最後にご指摘のコンソールエラーはこちらですから、恐縮ですがやはり指定方法の何かが違うように思います。 TypeError: all.items is undefined
kei344

2019/01/02 10:41

JSON.stringify(data,null, " ");をdata;に。で、$("#all").append(JSON.stringify(all,null, " "));に。 文字列にしているので取り出せません。
beer

2019/01/02 10:49

できました。なるほど、気を付けます。どうもありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問