3

次のクラスを作成しました

  class Contact
    def initialize(id, name, phone)
      @id = id
      @name = name
      @phone = phone
    end

    def to_json(*a)
      {
        json_class: self.class.name,
        data: { id: @id, name: @name, phone: @phone }
      }.to_json(*a)
    end

    def self.json_create(o)
      new( o[:data][:id], o[:data][:name], o[:data][:phone] )
    end
  end

これを使用してjsonに変換できるようになりました

Contact.new(1,'nik',10).to_json
 => "{\"json_class\":\"Contact\",\"data\":{\"id\":1,\"name\":\"nik\",\"phone\":10}}" 

しかし、私がJSON.parseそれを呼び出すと、エラーで爆発します。

JSON.parse(Contact.new(1,'nik',10).to_json)
NoMethodError: undefined method `[]' for nil:NilClass
    from (irb):44:in `json_create'

このチュートリアルから構文を選択しました。

4

2 に答える 2

3

メソッド内のシンボルを取り除きますjson_create

def self.json_create(o)
  new( o['data']['id'], o['data']['name'], o['data']['phone'] )
end
于 2012-06-27T17:46:58.933 に答える
0

as_jsonの代わりに使用しto_jsonます。

于 2012-06-27T17:46:02.403 に答える