这是我的第一个Ruby on Rails项目之一,在我的请求中发送带有用snake case编写的属性的JSON并在我的响应中接收带有驼峰式写入属性的JSON是很奇怪的。
以下是请求有效负载的示例:
{
"end_point":"test"
}
以下是响应有效负载的示例:
{
"endPoint":"test"
}
以下是使用和返回上述相似数据结构的代码: def创建
def create
@api = interactor.create(params[:organization_id], api_params)
respond_to do |format|
format.json { render :show, status: :created, location: api_url(@api) }
end
end
答案 0 :(得分:0)
使用ActiveSupport
中的String#camelize
方法(Rails附带),如下所示:
attributes_hash = { "test_data" => "test" }
json_hash = Hash[attributes_hash.map {|k, v| [k.camelize(:lower), v] }]
#=> {"testData"=>"test"}
现在,您可以将其转换为JSON字符串:
p json_hash.to_json #=> "{\"testData\":\"test\"}"
更新:您可以在模型类中覆盖serializable_hash
方法(因为您不清楚代码中的interceptor
究竟是什么,我假设您& #39; d需要将它放在你的实例化对象的类中,以便像JSON一样发送数据) -
def serializable_hash(options = nil)
options ||= {}
if options[:camelize]
Hash[attributes.map {|k, v| [k.camelize(:lower), v] }]
else
super
end
end
现在,您可以执行:@api.to_json(:camelize => true)
并将属性转换为除第一个字符之外的其他字符,即:endPoint
。