嗨我使用Active模式串行製作根節點串行
[
{
"contact" : {}
},
{
"contact" : {}
}
]
具有這種格式的JSON在我的Rails應用程序的數組如何讓這個我刪除上述節點的一個水平接觸使用主動模式串行這樣的:
[
{
},
{
}
]
我也想刪除節點名稱「接觸」
嗨我使用Active模式串行製作根節點串行
[
{
"contact" : {}
},
{
"contact" : {}
}
]
具有這種格式的JSON在我的Rails應用程序的數組如何讓這個我刪除上述節點的一個水平接觸使用主動模式串行這樣的:
[
{
},
{
}
]
我也想刪除節點名稱「接觸」
這渾身RailsCast #409 Active Model Serializers。
爲了刪除根節點,您在控制器中調用render
時添加了root: false
。假設你contact
S IN JSON來自contacts#index
方法,你的代碼可能看起來像:
def index
@contacts = Contacts.all
respond_to do |format|
format.html
format.json { render json: @contacts, root: false }
end
end
或者,如果你不想在你的任何JSON的任何根節點,在你ApplicationController
,添加以下方法:
def default_serializer_options
{root: false}
end
通常情況下,如果我沒有錯,默認根節點的控制器名稱是默認的。
format.json { render json: @contacts}
當然,您需要刪除root false,它會刪除節點的名稱。
如果你想作爲根對象使用與這個:
format.json { render json :@contacts, :root => 'contact' }
/config/initializers/serializer.rb
ActiveModelSerializers.config.adapter = :json_api # Default: `:attributes`
默認ActiveModelSerializers將使用屬性適配器(否 JSON root)。但我們強烈建議您使用jsonapi.org/format中指定格式的JsonApi適配器,其中 遵循1.0。
對於加載ActiveModel使用串行::人v0.10.x,你將需要創建一個初始化,包括以下內容:
# config/initializers/serializer.rb
ActiveModelSerializers.config.adapter = :json
ActiveModelSerializers.config.json_include_toplevel_object = true
然後,只需重新啓動應用程序,你應該得到的根你渴望的物體。
這適用於Rails 5.1.x.因人而異。 HTH。
我其實有這樣的設置。我想我沒有正確解釋。該對象具有包含聯繫人對象的屬性列表,並且我隱藏了所有其他屬性。我只想讓聯繫人對象成爲根。 – Madhan 2013-03-12 16:17:01