kap*_*pso 30 ruby json ruby-on-rails
我想做这样的事情:
require 'json'
class Person
attr_accessor :fname, :lname
end
p = Person.new
p.fname = "Mike"
p.lname = "Smith"
p.to_json
Run Code Online (Sandbox Code Playgroud)
可能吗?
Mat*_*chu 20
试试吧.如果你正在使用Ruby on Rails(并且标签说你是),我认为这个确切的代码应该已经可以工作,而不需要任何东西.
Rails支持来自控制器的JSON输出,因此它已经引入了您将需要的所有JSON序列化代码.如果您计划通过控制器输出此数据,则可以通过编写来节省时间
render :json => @person
Run Code Online (Sandbox Code Playgroud)
Dmi*_*yas 16
要在不触及Rails的情况下使您的Ruby类JSON友好,您需要定义两种方法:
to_json,它返回一个JSON对象as_json,返回对象的哈希表示当你的对象正确既响应to_json和as_json时,可适当的行为,即使它被嵌套在内心深处其他标准类比如阵列和/或哈希:
#!/usr/bin/env ruby
require 'json'
class Person
attr_accessor :fname, :lname
def as_json(options={})
{
fname: @fname,
lname: @lname
}
end
def to_json(*options)
as_json(*options).to_json(*options)
end
end
p = Person.new
p.fname = "Mike"
p.lname = "Smith"
# case 1
puts p.to_json # output: {"fname":"Mike","lname":"Smith"}
# case 2
puts [p].to_json # output: [{"fname":"Mike","lname":"Smith"}]
# case 3
h = {:some_key => p}
puts h.to_json # output: {"some_key":{"fname":"Mike","lname":"Smith"}}
puts JSON.pretty_generate(h) # output
# {
# "some_key": {
# "fname": "Mike",
# "lname": "Smith"
# }
# }
Run Code Online (Sandbox Code Playgroud)
另请参阅" 在嵌套对象中使用自定义to_json方法 ".
| 归档时间: |
|
| 查看次数: |
44671 次 |
| 最近记录: |