【问题标题】:Failing to parse JSON in Rails在 Rails 中无法解析 JSON
【发布时间】:2014-03-23 20:35:29
【问题描述】:

我正在尝试让我的一个页面请求并显示来自 last.fm API 的信息。此时没有用户输入,我只希望我的应用程序的根页面显示此 API 调用的结果。

我的 last_fm 控制器:

class LastFmController < ApplicationController
    include HTTParty
    format :json

    base_uri 'http://ws.audioscrobbler.com/2.0/'

        def self.get_events
            return get('http://ws.audioscrobbler.com/2.0/', :query => {
                :method => 'geo.getEvents',
                :api_key => 'xxxxxyyyyyyzzzzz'})
        end

  def index
    @events = LastFmController.get_events
  end

end

我的 last_fm#index 视图是空的,除了这个:&lt;%= @events %&gt;

当我转到 last_fm#index 视图时遇到的错误:

795: unexpected token at '<?xml version="1.0" encoding="utf-8"?>
<lfm status="ok">
<events xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" location="San Francisco, United States" page="1" perPage="10" totalPages="37" total="364" festivalsonly="0" tag="">
    <event xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" >
  <id>3782989</id>
  <title>Broken Hope</title>
  <artists>
    <artist>Broken Hope</artist>
    <artist>Oceano</artist>

此跟踪实际上包括我从 API 调用收到的整个哈希,所以它很长,为了简洁起见我将其省略。

错误页面的标题是Action Controller: Exception caught

如果我能对收到的哈希做一些基本的操作,我会很感激的,比如能够导航哈希并只显示某些项目。谢谢!

【问题讨论】:

    标签: ruby-on-rails json


    【解决方案1】:

    您正在尝试将 XML 解析为 JSON。 XML 解析器在这里:Nokogiri

    【讨论】:

      【解决方案2】:

      LastFM 默认返回 XML。您必须将 format=json 作为参数传入,以便它返回 JSON。这应该有效:

      class LastFmController < ApplicationController
          include HTTParty
          format :json
      
          base_uri 'http://ws.audioscrobbler.com/2.0/'
      
              def self.get_events
                  return get('http://ws.audioscrobbler.com/2.0/', :query => {
                      :method => 'geo.getEvents',
                      :format => 'json',
                      :api_key => 'xxxxyyyyyzzzz'})
              end
      
        def index
          @events = LastFmController.get_events
        end
      
      end
      

      【讨论】:

      • 用几年的经验回顾这个问题,当我看到我包含我的 api 密钥时,我感到畏缩。不是说我被黑了,但我希望你能告诉我:)
      猜你喜欢
      • 2012-12-26
      • 2020-11-04
      • 2019-11-11
      • 2013-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多