2015-09-27 100 views
0

我一直在关注here的示例以从服务器读取JSON数据。从Rails服务器读取JSON

从我的应用程序,我可以从服务器读取示例在他们的网站提供的示例。

但是,当我创建JSON路径来测试我是否可以从我的server获取信息时,它会在下面的代码的第81行(标有注释,//此处标记)中给出NullPointerException错误。

protected String doInBackground(String...params) { 
     OkHttpClient client = new OkHttpClient(); 

     Request request = new Request.Builder().url(URL).build(); 

     Response response = null; 
     try { 
      response = client.newCall(request).execute(); 

     } catch (IOException e) { 
      e.printStackTrace(); 
     } 

     try { 
      return response.body().string(); //here 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return null; 
} 

起初,我认为我在设置服务器时出了问题。但是,在通过网络进行了一些搜索之后,发现没有“特殊”的事情要做,而不是让JSON文件拥有JSON对象,我猜测这个错误并不是因为这个。

任何人都可以帮助我吗?

p.s.如果服务器链接由于服务器关闭而不起作用,以下是我的JSON文件的代码。

/views/user/show.json.erb

{ 
    <% @user.each do |record| %> 
    { 
     "id" => <%= record.id %> 
     "name" => <%= record.name %> 
     "age" => <%= record.age %> 
    } 

    <% end %> 
} 

在此先感谢。

回答

0

使用模板在服务器上生成JSON文件很奇怪。

的JSON语法是错误的几点:

  • 你可能想回报用户,而不是一本字典的列表
  • 列表中的元素应该用逗号分隔。
  • 字典中没有=>。语法应该是"key": "value"

通常,使用轨道上的红宝石,您不需要使用.erb文件返回JSON。您可以简单地使用渲染功能,该功能会自动将给定对象转换为JSON并将其返回给客户端:

render json: @user.map {|record| { id: record.id, name: record.name, age: record.age } } 
+0

谢谢!事实证明,我的C9服务器阻止发布请求...:S – ohnu93

0

你没有构建有效的json。试着例如jbuilder gem,这是目前推荐的方法,来创建你的json文件。您的代码会变成:

# app/views/user/show.json.jbuilder 

json.array! @user, :id, :name, :age 

与宝石自述文件中的示例类似。

+0

谢谢!事实证明,我的C9服务器阻止发布请求...:S – ohnu93