0

我有一个 IOS 应用程序的后端。我正在尝试使用 JSON 从我的 rails 后端读取数据。我的 bubbleWrap 获取请求如下。

BW::HTTP.get("url_here/children/1.json") do |response|
   json = BW::JSON.parse response.body.to_str
   for line in json
     p line[:name]
   end
end

它不会带回任何数据,它实际上破坏了我的代码。我找不到任何文档,其中包含如何使用 ruby​​motion/Bubblewrap 中的 REST 并将数据拉回我的应用程序的示例。

任何帮助表示赞赏。

4

2 回答 2

1

这是我在很多应用程序中使用的一个方便的类抽象……它完全从视图控制器逻辑中抽象出 API 调用逻辑,以分离关注点,并且在Matt Green 的 Inspect 2013演讲之后大量建模。

class MyAPI

  APIURL = "http://your.api.com/whatever.json?date="

  def self.dataForDate(date, &block)
    BW::HTTP.get(APIURL + date) do |response|
        json = nil
        error = nil

        if response.ok?
          json = BW::JSON.parse(response.body.to_str)
        else
          error = response.error_message
        end

        block.call json, error
    end
  end

end

然后调用这个类,我们这样做:

MyAPI.dataForDate(dateString) do |json, error|
  if error.nil?
      if json.count > 0
        json.each do |cd|
          # Whatever with the data
        end
      else
        App.alert("No Results.")
      end
  else
    App.alert("There was an error downloading data from the server. Please check your internet connection or try again later.")
  end
end
于 2013-08-23T18:13:36.710 回答
0

在解析响应正文之前始终检查响应代码。你可能

BW::HTTP.get(url) do |response|
  if response.ok?
    data = BW::JSON.parse(response.body.to_str)
    # make sure you have an array or hash before you try iterating over it
    data.each {|item| p item}
  else
    warn "Trouble"
  end
end

还要确保您对 JSON 响应与您的代码的期望进行完整性检查。也许 JSON 是一个数组而不是一个哈希?

于 2013-08-23T17:23:19.673 回答