我有以下列方式从API调用的响应中填充的ruby模型:
JSON.parse
将回复转换为Hash
Hash
传递到类initialize
方法中
initialize
方法转换camelCase哈希键并分配underscore_case实例变量这很好用,但其中一些响应对象很大。其他是大型物体阵列。
分析显示这个过程消耗了大量内存 - 有意义,我创建哈希以创建对象,我确信camelCase to underscore_case转换是昂贵的 - 所以你遇到的库或技术是什么哪个解决了这个问题呢?
(更新)这是一个过于简单的例子:
来自第三方API的JSON响应(不太可能改变):
"{\"abcDef\": 123, \"ghiJkl\": 456, \"mnoPqr\": 789}"
类定义(不太可能改变):
class Data
attr_accessor :abc_def, :ghi_jkl, :mno_pqr
def initialize(attributes = {})
attributes.each do |key, val|
send "#{key.underscore}=".to_sym, val
end
end
end
创建对象:
Data.new JSON.parse(api.get)