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

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

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

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

JavaScript

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

Q&A

解決済

2回答

3890閲覧

jsでJSONデータの任意のデータを取得

masateru2

総合スコア39

JSON

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

JavaScript

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

0グッド

0クリップ

投稿2018/08/01 06:23

編集2018/08/01 07:19

JSON

1app.json 2{ 3 "access_token":"ya29.GlwKBuiaEqn3g", 4 "token_type":"Bearer", 5 "expires_in":3600, 6 "created":15337, 7 "refresh_token":"1/irAlXMhu_XZ" 8} 9

この様なJSONデータのaccess_tokenの中身の値だけ抜き出したて変数に代入したいのですが可能ですか?

質問内容
例えば「 access_token 」の「 "ya29.GlwKBuiaEqn3g" 」だけを出力する場合、どうしたらいいでしょうか?

確かに質問内容薄すぎましたね。

詳しく書きます。
JSONデータ見てもらえればわかるのですが、このアクセストークンは3600秒=1時間で切れてしまいます。
リフレッシュトークンでアクセストークンを変更しているので、更新毎にアクセストークンの中身が入れ替わってしまいます。なので、毎回JSONファイルから呼び出してきてデータを取得しないといけないのです。
現在できている部分は

html

1<!DOCTYPE html> 2<html lang="en" dir="ltr"> 3<head> 4 <meta charset="utf-8"> 5 <title></title> 6</head> 7<body> 8 <form name="myform"> 9 <input name="myfile" type="file" /> 10</form> 11 12 <script> 13 var form = document.forms.myform; 14 form.myfile.addEventListener( 'change', function(e){ 15 var result = e.target.files[0]; 16 17 var reader = new FileReader(); 18 19 //読み込んだファイルの中身を取得する 20 reader.readAsText( result ); 21 22 reader.addEventListener('load', function() { 23 24 //JSON形式に変換する 25 console.log(reader.result); 26 27 console.log('a'); 28 29 }) 30 }) 31</script> 32</body> 33</html> 34

この様に直接HTMLでファイルを指定して選択したJSONデータの中身をログで表示することができています。
直接ファイルをGUIで指定する方法ではなく、コード内でJSONファイルのパスを指定して、ページ更新毎に「 access_token 」の「 "ya29.GlwKBuiaEqn3g" 」だけを出力したいのですが、

js

1var form = document.forms.myform; 2 form.myfile.addEventListener( 'change', function(e){ 3 var result = e.target.files[0]; 4 5 var reader = new FileReader(); 6 7 //読み込んだファイルの中身を取得する 8 reader.readAsText( result ); 9 10 reader.addEventListener('load', function() { 11 12 //JSON形式に変換する 13 console.log(reader.result); 14 15 console.log('a'); 16 17 }) 18 })

changeの部分をコード内で指定したJSONデータのパスにして、「 access_token 」の「 "ya29.GlwKBuiaEqn3g" 」を取ってきたいのですが、どういった取り方がありますか?

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

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

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

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

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

退会済みユーザー

退会済みユーザー

2018/08/01 06:27

それは JSON 文字列ではないようですが、何のつもりですか? JavaScript オブジェクト?
m.ts10806

2018/08/01 06:36

質問の仕方がそれで欲しい回答が得られるでしょうか。可不可だけを聞きたいのでしたら「可能です」だけの回答となりますが。
masateru2

2018/08/01 06:37

とりあえず例で作ったので本物に修正しますね
masateru2

2018/08/01 06:39

質問内容変更しました
m.ts10806

2018/08/01 06:50

いずれにしても自身で何も試されてないようなので丸投げですね。
masateru2

2018/08/01 07:18

詳しく書いたので、ご一読下さい
退会済みユーザー

退会済みユーザー

2018/08/01 07:28

> コード内でJSONファイルのパスを指定して ← そもそも JavaScript ではできないことのようですが? <input type="file" ... でユーザーが操作するというのが唯一ファイルにアクセスする方法だと思うのですが?
退会済みユーザー

退会済みユーザー

2018/08/01 07:31

Web サーバーにあるファイルを、タイマー& ajax なとを使って定期的に取得して処理するようにしては?
masateru2

2018/08/01 07:40 編集

タイマーとAjaxで試して見ますが、調べていた記事にはAjaxは非同期なので動的なデータを取る時にデータのズレが起きると書いてあったのですが、 ページ更新毎にトークンを変更させるので、Ajaxで行うと正確にデータが取れるんですかね?
退会済みユーザー

退会済みユーザー

2018/08/01 07:56

「ページ更新毎にトークンを変更」とか言われても、ここに書いてあること以外知り得ない第三者には何のことやらわかりません。ちょっとは自分で考えてみてくださいな。
guest

回答2

0

JavaScriptがわからなくても「js json 読み込み」とググれば1分でわかるので、まずググるようにしてください

javascript

1var data = { 2 "access_token":"ya29.GlwKBuiaEqn3g", 3 "token_type":"Bearer", 4 "expires_in":3600, 5 "created":15337, 6 "refresh_token":"1/irAlXMhu_XZ" 7} 8 9var accessToken = data.access_token

以下の記事が参考になります
https://qiita.com/1mada/items/9a48f7053a6016b5fd5a

あと追加の質問「記号が変換されないようにするためには、どのように出力したら良いでしょうか??」についてですが、どの記号なのか明確にしてください。

投稿2018/08/01 06:48

crimnut

総合スコア380

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

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

masateru2

2018/08/01 07:18

質問内容が薄すぎたこと誠に反省しております。 質問内容変更したので、ご一読下さい
guest

0

自己解決

keisukehさんの回答により解決しました

$accessTokenがそもそもbladeに渡ってきてるなら $hoge = {{ $accessToken }} なしで  var hoge = <?php echo json_encode($accessToken ); ?>; ではどうでしょ?

投稿2018/08/02 00:29

masateru2

総合スコア39

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問