【问题标题】:Ruby object to json (without rails)Ruby 对象到 json (没有 rails)
【发布时间】:2016-07-03 20:58:47
【问题描述】:

我正在尝试将 ruby​​ 对象序列化为由 API 消化的 json。

感谢this 链接,我的 Json 中没有对象,而是一串值。{"@id":"32662787","@status":"Created","@dateTime":"2016-03-11T08:42:14.6033504"} 但问题是名称前面的前导@。有没有办法解决这个问题?

我尝试序列化的对象类:

   class Obj
  attr_accessor :id, :status, :dateTime
  def to_json
    hash = {}
    self.instance_variables.each do |var|
      hash[var] = self.instance_variable_get var
    end
    hash.to_json
  end
end

我不想使用未包含在 ruby​​ 中的 gem。

提前致谢!

【问题讨论】:

    标签: ruby json


    【解决方案1】:

    instance_variables 返回带有@ 的变量(可以说有点傻),你可以通过字符串拼接将其剥离:

    hash[var[1..-1]] = ...
    

    完整示例:

    require 'json'
    
    class Obj
      attr_accessor :id, :status, :dateTime
    
      def to_json
        hash = {}
        self.instance_variables.each do |var|
          hash[var[1..-1]] = self.instance_variable_get var
        end
        hash.to_json
      end
    end
    
    a = Obj.new
    a.id = 42
    a.status = 'new'
    
    puts a.to_json
    

    给予:

    {"id":42,"status":"new"}
    

    请注意,我们@ 剥离为instance_variable_get,因为这里需要它(可以说这也有点傻,但至少它是一致的)。

    【讨论】:

      猜你喜欢
      • 2011-05-26
      • 2015-12-01
      • 1970-01-01
      • 2014-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多