Ruby 对象到 json (没有 rails)

Posted

技术标签:

【中文标题】Ruby 对象到 json (没有 rails)【英文标题】:Ruby object to json (without 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。

提前致谢!

【问题讨论】:

【参考方案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,因为这里需要它(可以说这也有点傻,但至少它是一致的)。

【讨论】:

以上是关于Ruby 对象到 json (没有 rails)的主要内容,如果未能解决你的问题,请参考以下文章

ruby 在rails中为具有关联的对象生成JSON

Rails 3 runner 没有检测到 JSON gem?

Rails:如何将对象数组的哈希转换为 json

Ruby on Rails 生成模型

如何将 json 数据从 ruby​​ 控制器传递到 javascript (Rails 6.1)?

jquery .ajax 对 ruby​​ on rails 服务器的 post 请求在客户端出现 JSON.parse 错误