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

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

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

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

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

1回答

456閲覧

jsonファイルをurlから読み込んで使いたい

to_night

総合スコア1

JSON

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

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2020/09/23 16:41

ruby

1require 'json' 2require 'uri' 3require 'net/http' 4require './app/models/faculty' 5require './app/models/university' 6 7uri = URI.parse('https://www.dropbox.com/s/5jirjbyb1hca9rl/school.json?dl=0') 8json = Net::HTTP.get(uri) 9hash = JSON.parse(json) 10 11i = 0 12f = [] 13 14 15while i <= hash.length / 2 16 uni = University.create(name: hash[i]['大学']) 17 hash[i + 1]['学部'].map do |name| 18 if f.include?(name) 19 uni.faculties << Faculty.find_by(name: name) 20 else 21 uni.faculties << Faculty.create(name: name) 22 f.push(name) 23 end 24 end 25 i += 2 26end 27

jsonファイルをこのように読み込んで使おうと思うのですが、このコードを実行してみるとこのような謎の文字列が表示されるだけで値を取得できません。

一部分を抜粋したものです erf_tools/cpu_utils", "modules/constants/webtiming"], (function(mod){ mod.initialize_module({"ttv_at_dom_interactive": false, "is_dws2": false, "is_pagelet": true, "source_type": "web", "url": null, "subtypes": {"previewformat": "text", "metro": "sjc", "tti_flow": "/shared_link_render/file", "js_preloading": false, "shared_link_render": "file", "amp_tti_flow": "/shared_link_render/file"}, "log_time_to_interactive": true, "tti_at_dom_interactive": false, "is_dws": true, "is_early_ensemble": false, "log_time_to_view": true}); }), "require-tier-require-and-configure-modules/clean/web_timing_logger"],[["react"], (function(React){ /* dbx-global-decl: React is for devtools */ window.React = React;; }), "require-tier-react-element-set-global"]]]); })}, "sjc12b-rp11-2a", "65380af5ae87a8ed1d48522a1a09d795a2701fcc" )}); </script><script async="async" src="/page_success/end?dws_page_name=shared_link_file&amp;path=%2Fs%2F5jirjbyb1hca9rl%2Fschool.json&amp;request_id=a9c4e22a64b726436e7910e9bfb079ac&amp;time=1600877960" nonce="RX4E+jIA8Ngnx/6kUQ8h"></script></body></html><!--status=200-->'

エラーメッセージがないので調べることもできず困っています。知識のある方がいらっしゃれば教えていただきたいです。

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

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

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

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

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

kuma_kuma_

2020/09/23 18:43

指定URLで開くとドロップボックスの画面が開いて中にJSONのデータが表示されます。 RubyでこのURLで送信した際結果JSONのデータが取得されますか?
to_night

2020/09/24 07:43

すみません、2行目の意味がわかりません
to_night

2020/09/24 13:35

そうだと思います
kuma_kuma_

2020/09/24 17:05

Dropbox上のファイルをダウンロードをする際は「Dropbox API」が必要なはずですが...
guest

回答1

0

json = Net::HTTP.get(uri).body に。
ただし、それでも kuma_kuma_ さんの「RubyでこのURLで送信した際結果JSONのデータが取得されますか?」という問題はのこります。

bodyをそのまま出力してみて、JSONだけではなく、htmlがぞろって場合は Nokogiri の出番。
わかりやすく、uniqなtagに囲まれていたら正規表現とかsplitとかsub、gsubで取り出せます。

投稿2020/09/24 09:14

winterboum

総合スコア23567

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問