Ruby API响应为较低的驼峰案例

时间:2016-02-16 16:25:46

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

我正在尝试将API响应作为lowerCamelCase返回,但它无法正常工作,我需要为所有控制器/字段执行此操作,因此我需要整个项目的解决方案。

我尝试了很多东西,包括这个(http://brentvatne.ca/automatic-casing-activemodel-serializer/)告诉我将Activemodel配置为lower_camel,如下所示

ActiveModel::Serializer.config.key_format = :lower_camel

但这不起作用,它返回以下json

{
    "users": [{
        "id": "56b110089c28691b84a3bd73",
        "first_name": "Lucas"
    }]
}

我需要将first_name转换为firstName。

版本:

rails -v
Rails 4.2.5

ruby -v
ruby 2.2.3p173 (2015-08-18 revision 51636) [i386-mingw32]

宝石

active_model_serializers (0.10.0.rc4)
rails-api (0.4.0)

我的ember App识别JSON,但我不想在JS上使用蛇案例变量

3 个答案:

答案 0 :(得分:6)

轰!我找到了!我不得不深入研究AMS回购(并最终偶然发现了一篇有用的自述文件),但这里是为了v0.10:

ActiveModelSerializers.config.key_transform = :camel_lower

将它放在初始化器中。

还有其他选项::dash:camel:underscore:unalterednil

https://github.com/rails-api/active_model_serializers/blob/a032201a91cbca407211bca0392ba881eef1f7ba/docs/general/configuration_options.md

答案 1 :(得分:1)

在项目中搜索key_format,以防某些地方被覆盖。

请在控制台中试用,尝试明确设置key_format以确保可行(MySerializer.new(object, key_format: :lower_camel).as_json

如果它没有帮助,您可以在此处提供代码示例,了解如何使用序列化程序。

答案 2 :(得分:1)

问题在于Active Model Serializer的版本(0.10.0rc2)。

在最后一个稳定版本(0.9)上,已合并issue以修复camelCase,但0.10 RC版本中不存在相同的PR。

所以在我降级了宝石后,它起作用了:)