使用BubbleWrap读取JSON文件

时间:2013-08-22 19:41:17

标签: json rubymotion

我有一个IOS应用程序的后端。我试图通过使用JSON从我的rails后端读取数据。我的bubbleWrap get请求如下。

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

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

感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

这是我在很多应用程序中使用的一个方便的类抽象...它完全从视图控制器逻辑中抽象出API调用逻辑以分离关注点,并在Matt Green's {{3}之后进行了大量建模谈谈。

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

答案 1 :(得分: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是一个数组而不是哈希?