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

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

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

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

JSON

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

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Q&A

解決済

1回答

2790閲覧

RailsでJSON::ParserErrorが表示される

Takuma_Tanaka

総合スコア128

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

JSON

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

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

0グッド

0クリップ

投稿2016/06/20 03:31

編集2016/06/20 10:13

見ていただいてありがとうございます。

###前提・実現したいこと
Railsを使用してInstagramの特定のハッシュタグを検索して情報を表示しようとしています。
参考にしたサイトは以下の通りです。
https://s3-ap-northeast-1.amazonaws.com/nyansta-book/book.pdf
http://blog.hifumi.info/2014/11/30/instagram-ruby-gem/
http://hyottokoaloha.hatenablog.com/entry/2015/04/28/201014

###発生している問題・エラーメッセージ

JSON::ParserError in TopController#index Extracted source (around line #12):

###該当のソースコード
top_controller.rb

class TopController < ApplicationController require 'instagram' require 'uri' require 'json' def index Instagram.configure do |config| config.client_id = "#{Constants::CLIENT_ID}" config.client_secret = "#{Constants::CLIENT_SECRET}" config.access_token = "#{Constants::ACCESS_TOKEN}" end unless JSON.parse(Instagram.tag_recent_media(URI.encode("はんにゃらばんばんばん"))) @medias = "" else @medias = JSON.parse(Instagram.tag_recent_media(URI.encode("はんにゃらばんばんばん"))) end end end

views > top > index.html.erb

<% if @medias == nil %> <%= "投稿がありません" %> <% else %> <%= image_tag(@medias.images.low_resolution.url) %> <% @medias.each do |media| %> <%= media['images']['standard_resolution']['url'] %> <%= media['caption']['from']['full_name'] %> <% end %> <% end %>

###試したこと
JSON.parseが不要なのかなと思って削除してみたり、Instagram.configureの中にunlessを入れてみたりしたのですが、同じエラーが出ます。

###補足情報(言語/FW/ツール等のバージョンなど)
・Instagramはsandboxモードで、認証済みユーザーで"#はんにゃらばんばんばん"の内容を1件投稿しています。
・CLIENT_ID、CLIENT_SECRET、ACCESS_TOKENは config > initializers > constants.rbに「module Constants」として記載しています。

JSONのparseが上手く行ってないのか、そもそもInstagramの情報が正常に取得できていないからparseが上手くいかないのかも分かりません。
説明ベタで申し訳ありません。
sandboxモードの認証ユーザーからの特定タグの情報だけを取得・表示したいのでご教示よろしくお願いします。

自己解決済みですが、今後見られた方の為に修正したソースコードを記載しておきます。
ローカルでもサーバー上でも動作確認済みです。
ただし、見た目は何もいじっていませんし、書かなくて良い余計な内容も含まれていると思います。
###完成したソースコード
top_controller.rb

class TopController < ApplicationController require 'instagram' # require 'uri' require 'json' def index Instagram.configure do |config| config.client_id = "#{Constants::CLIENT_ID}" config.client_secret = "#{Constants::CLIENT_SECRET}" config.access_token = "#{Constants::ACCESS_TOKEN}" end unless Instagram.tag_recent_media("はんにゃらばんばんばん") @medias = "" else @medias = Instagram.tag_recent_media("はんにゃらばんばんばん") end end end

views > top > index.html.erb

<% if @medias == nil %> <%= "投稿がありません" %> <% else %> <% @medias.each do |media| %> <!-- 投稿画像 --> <%= link_to image_tag(media.images.low_resolution.url, :class => "img- rounded" ), media.link, :target=>["_blank"] %><br> <!-- 投稿者名 --> <%= media['caption']['from']['full_name'] %><br> <!-- コメント --> <%= media.caption.text %><br> <!-- いいねカウント --> <img src = "/images/heart.gif"><%= media['likes']['count'] %><br> <!-- コメントカウント --> <img src = "/images/comment.gif"><%= media['comments']['count'] %><br> <% end %> <% end %>

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

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

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

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

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

guest

回答1

0

自己解決

すみません。
”URI.encode”はもう使えないんですね。
ご覧頂いた方、大変失礼しました。

投稿2016/06/20 04:47

Takuma_Tanaka

総合スコア128

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問