我正在使用 Sinatra 并尝试通过使用 'json' gem 并调用 .to_json 方法来输出 JSON 中的对象。我期望输出为 JSON,其中包含 attr_reader 部分中的符号及其值。
这是我的代码。我需要做一些特别的事情才能让它发挥作用吗?
require "sinatra"
require "json"
class Foo
attr_reader :id, :name
def initialize(id, name)
@id = id
@name = name
end
end
get '/start' do
content_type :json
Foo.new(2, "john").to_json
end
Run Code Online (Sandbox Code Playgroud)
我从输出中得到的只是对象默认的 to_s。
"#<Foo:0x007fe372a3ba80>"
Run Code Online (Sandbox Code Playgroud)
您需要在您的类上指定一个 to_json 方法。
class Foo
attr_reader :id, :name
def initialize(id, name)
@id = id
@name = name
end
def to_json
{:id => @id, :name => @name}.to_json
end
end
Run Code Online (Sandbox Code Playgroud)