2

私はSinatraを使用しており、「json」gemを使用して.to_jsonメソッドを呼び出してJSONでオブジェクトを出力しようとしています。出力は、attr_readerセクションのシンボルとその値を含むJSONであると期待していました。

これが私のコードです。これを機能させるために何か特別なことをする必要がありますか?

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

出力から取得するのは、オブジェクトのデフォルトのto_sだけです。

"#<Foo:0x007fe372a3ba80>"
4

2 に答える 2

4

クラスで 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
于 2012-10-03T12:04:18.353 に答える
0

to_hashメソッドが必要なようです

class Foo
  def to_hash
    {:id => @id, :name => @name}
  end
end

それ以外の場合、Foo は json で認識できる型ではありません。

于 2012-10-03T12:06:58.417 に答える