ActiveModel序列化器JSON包含“属性”键

时间:2018-12-30 04:13:45

标签: ruby-on-rails json ruby serialization

我正在使用Rails ActiveModel Serializer将JSON输出到API端点。

我正在获取以下JSON输出:

{
  "data":[
    {
      "id":"396",
      "type":"profiles",
      "attributes":{
        "name":"Impossibles",
        "created-at":"2017-05-11T18:14:06.201-04:00",
        "updated-at":"2018-04-01T13:34:15.905-04:00",
        "website":"http://soundcloud.com/impossibles"
      }
    }
  ]
}

但是希望它的格式如下:

{
  "data":[
    {
      "id":"396",
      "type":"profiles",
      "name":"Impossibles",
      "created-at":"2017-05-11T18:14:06.201-04:00",
      "updated-at":"2018-04-01T13:34:15.905-04:00",
      "website":"http://soundcloud.com/impossibles"
    }
  ]
}

尝试避免在返回的JSON中额外嵌套。 有没有办法删除“属性”键?

这是我的序列化器:

class ProfileSerializer < ActiveModel::Serializer
    attributes :id, :name, :created_at, :updated_at, :website
end

还有我的控制器:

def show
  profile = Profile.find(params[:id])
  render json: profile, status: :ok
end

1 个答案:

答案 0 :(得分:0)

在阅读了一些GitHub问题之后,看来“属性”嵌套来自JSON API规范,并且的预期行为: https://jsonapi.org/format/#document-resource-objects

此问题很有帮助: https://github.com/rails-api/active_model_serializers/issues/2202

看起来像功能,而不是错误。