nix*_*mus 6 serialization activerecord json ruby-on-rails
我需要将模型序列化为json并使所有键都被骆驼化.我看到to_xml中有一个选项允许使用驼峰.我似乎无法强迫json序列化给我一个camelized哈希.这是铁路可能的东西吗?
Pet*_*ete 10
我有类似的问题.经过一些研究后,我将as_json ActiveModel方法与一个可以使用Hash密钥的帮助程序包装在一起.然后我将模块包含在相关模型中:
# lib/camel_json.rb
module CamelJson
def as_json(options)
camelize_keys(super(options))
end
private
def camelize_keys(hash)
values = hash.map do |key, value|
[key.camelize(:lower), value]
end
Hash[values]
end
end
# app/models/post.rb
require 'camel_json'
class Post < ActiveRecord::Base
include CamelJson
end
Run Code Online (Sandbox Code Playgroud)
这对我们的情况非常有效,这种情况相对简单.但是,如果你使用JBuilder,显然有一个配置将camel case设置为默认值:https://stackoverflow.com/a/23803997/251500
如果您使用rails,请跳过添加的依赖项并使用Hash#deep_transform_keys.它还具有嵌入式嵌套 键的附加好处(如果您正在执行类似操作,则会很方便user.as_json(includes: :my_associated_model)):
h = {"first_name" => "Rob", "mailing_address" => {"zip_code" => "10004"}}
h.deep_transform_keys { |k| k.camelize(:lower) }
=> {"firstName"=>"Rob", "mailingAddress"=>{"zipCode"=>"10004"}}
Run Code Online (Sandbox Code Playgroud)
资料来源:https://github.com/rails/rails/blob/4-2-stable/activesupport/lib/active_support/core_ext/hash/keys.rb#L88
| 归档时间: |
|
| 查看次数: |
6012 次 |
| 最近记录: |