[Rails]一行程式碼完成自訂JSON格式資料

來源:互聯網
上載者:User

在Rails3中,增加JSON格式資料輸出非常方便,只需在Controller中稍作修改即可。一種做法是在controller的開始處添加respond_to :json,然後使用respond_with響應請求。舉例:假定有模型:書(book),有兩個欄位:書名(name)和作者名(author),controller為BooksController,將其index方法修改為(假定在index方法中輸出JSON資料):

class BooksController < ApplicationController<br /> // 支援html, xml ,json<br /> respond_to :html, :xml, :json<br /> def index<br /> @books = Books.all<br /> respond_with @books<br /> end<br /> // 其它方法忽略<br /> ...<br />end 

此時啟動服務後(執行rails s),訪問地址:http://localhost:3000/books/index.json將返回類似以下格式的資料:

[<br />"book":{"id":1,"title": "BookA","author":"Author1"},<br />"book":{"id":2,"title": "BookB","author":"Author2"},<br />"book":{"id":3,"title": "BookC","author":"Author3"}<br />]<br />

某些情況下我們需要改變JSON輸出格式,比如:需要把數以萬計的記錄緩衝到用戶端的localStorage或local database,去掉資料類型名稱book以及欄位名稱id,name,author,將大大減小資料尺寸。如何改變這種格式輸出呢?比如,輸出為以下的數組格式:

[<br />["1","BookA","Author1"],<br />["2","BookB","Author2"],<br />["3","BookC","Author3"]<br />]

一行代碼足矣。編輯檔案app/views/books/index.json.erb,填入以下內容:

[<%= raw @books.map { |b| '["' + "#{b.id}" + '","' + "#{b.name}" + '","'"#{b.author}" + '"]' }.join(',') %>]

另一種有稍微改進的寫法:

[<%= raw @books.map { |b| %{["#{b.id}","#{b.name}","#{b.value}"]} }.join(',') %>]

 

(結束)


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.