4

我正在嘗試使用主動模型序列化程序創業板與我的API,雖然我正在努力與我認爲會很簡單的東西。主動模型序列化程序和自定義JSON結構

我所有的JSON響應都是封裝格式,每個響應都有一個頂級消息和狀態屬性,數據在content屬性中。每個JSON響應都遵循這種格式。

{ 
    'status': statuscode, 
    'message': message, 
    'content': { 'object':obj } 
} 

「內容」屬性的內容,我想放置串行的輸出。我的文章列表等

我不知道如何做到這一點雖然?

任何幫助將不勝感激。

回答

1

如果你不介意你的狀態和消息散列在哈希裏面,你可以使用元鍵。

(從https://github.com/rails-api/active_model_serializers/tree/0-8-stable

render :json => @posts, :serializer => CustomArraySerializer, :meta => {:total => 10}

=> 
{ 
    "meta": { "total": 10 }, 
    "posts": [ 
    { "title": "Post 1", "body": "Hello!" }, 
    { "title": "Post 2", "body": "Goodbye!" } 
    ] 
} 

或者,如果你需要他們的頂級鍵,你可以繼承ArraySerializer這樣並覆蓋as_json允許它在你的鑰匙合併。

def as_json(*args) 
    @options[:hash] = hash = {} 
    @options[:unique_values] = {} 

    hash.merge!(@options[:top_level_keys]) if @options.key?(:top_level_keys) 

    root = @options[:root] 
    if root.present? 
     hash.merge!(root => serializable_array) 
     include_meta(hash) 
     hash 
    else 
     serializable_array 
    end 
    end 

然後就

render :json @object, :serializer => YourCustomArraySerializer