【问题标题】:how to change response format from fast_jsonapi format to AMS gem response format如何将响应格式从 fast_jsonapi 格式更改为 AMS gem 响应格式
【发布时间】:2019-08-10 00:59:26
【问题描述】:

我想改变fast_jsonapi gem的响应格式:

{
    "data": {
        "id": "8",
        "type": "directory",
        "attributes": {
            "firstname": "Naoufal",
            "lastname": "Huster",
        }
    }
}

到这里:

{
  "id": "8",
  "firstname": "Naoufal",
  "lastname": "Huster",
}

我正在从使用 AMS gem 迁移到使用 fast_jsonapi,我想使用 fast_jsonapi 但在渲染数据时保持与 AMS 相同的响应 json 格式。

红宝石 2.5.0 导轨 5.2.1 fast_jsonapi gem

【问题讨论】:

标签: ruby-on-rails json active-model-serializers fastjsonapi


【解决方案1】:

我认为这是不可能的。 fastjson_api gem 遵循 json api 标准。

另外,repo 中也提出了类似的问题:source

【讨论】:

  • 有没有办法从 json_api 标准转换为模型中的其他格式之类的?
  • 我建议您使用其他 gem(如 AMS)。
【解决方案2】:

您可以使用sparse fieldsets 选择性地选择您想要的字段。

class MovieSerializer
  include FastJsonapi::ObjectSerializer

  attributes :name, :year
end

serializer = MovieSerializer.new(movie, { fields: { movie: [:name] } })
serializer.serializable_hash

如果您需要进一步展平数据,您可以创建一个辅助方法来手动展平 JSON,或者您可以尝试使用标准 .flatten 函数对数组或哈希进行展平,具体取决于您的数据格式。如果您已经将其字符串化为 JSON,则无法执行 flatten。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-08-30
    • 2014-11-04
    • 2017-04-23
    • 1970-01-01
    • 1970-01-01
    • 2010-10-12
    • 1970-01-01
    相关资源
    最近更新 更多