将JSON字符串直接反序列化为模型?

时间:2014-11-13 03:14:55

标签: ruby json activerecord garbage-collection

我有以下列方式从API调用的响应中填充的ruby模型:

  1. JSON.parse将回复转换为Hash
  2. Hash传递到类
  3. initialize方法中
  4. initialize方法转换camelCase哈希键并分配underscore_case实例变量
  5. 这很好用,但其中一些响应对象很大。其他是大型物体阵列。

    分析显示这个过程消耗了大量内存 - 有意义,我创建哈希以创建对象,我确信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)
    

0 个答案:

没有答案