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)的主要内容,如果未能解决你的问题,请参考以下文章
Rails 3 runner 没有检测到 JSON gem?
如何将 json 数据从 ruby 控制器传递到 javascript (Rails 6.1)?
jquery .ajax 对 ruby on rails 服务器的 post 请求在客户端出现 JSON.parse 错误