ruby-on-rails – 如何使用camelcased密钥名称从Rails返回JSON
发布时间:2020-12-17 04:02:51 所属栏目:百科 来源:网络整理
导读:我正在构建一个带有Rails后端的JS应用程序,为了不混淆蛇和骆驼的情况,我想通过从服务器返回camelcase密钥名称来规范化它.因此,user.last_name在从API返回时将返回user.lastName. 我该如何实现这一目标?谢谢! 编辑:添加控制器代码 class Api::V1::UsersCon
我正在构建一个带有Rails后端的JS应用程序,为了不混淆蛇和骆驼的情况,我想通过从服务器返回camelcase密钥名称来规范化它.因此,user.last_name在从API返回时将返回user.lastName.
我该如何实现这一目标?谢谢! 编辑:添加控制器代码 class Api::V1::UsersController < API::V1::BaseController # authorize_resource respond_to :json,only: [:index] def sky @user = User.find_by_id(params[:user_id]) if @user obj = { sky: { sectors: @user.sectors,slots: @user.slots } } render json: obj else raise "Unable to get Sky" end end end 解决方法
我这样做的方法是使用ActiveModelSerializer和json_api适配器:
在您的Gemfile中,添加: gem 'active_model_serializers' 创建一个新文件/config/initializers/ams.rb,其中包含: ActiveModelSerializers.config.adapter = :json_api ActiveModelSerializers.config.key_transform = :camel_lower 您的控制器操作应如下所示: class ApiController < ApplicationController def sky @user = User.find_by_id(params[:user_id]) if @user render json: @user,serializer: UserSkySerializer else raise "Unable to get Sky" end end end 现在您需要创建一个序列化程序.首先,创建一个新目录app / serializers /. 接下来,创建一个新的序列化程序app / serializers / user_sky_serializer.rb,其中包含: class UserSkySerializer < ActiveModel::Serializer attributes :sectors,:slots end 结果类似于您在obj哈希中描述的内容,但所有属性键都将使用jsonapi标准在camelCase中呈现. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容