2015-09-27 87 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