ruby - 无法用 ruby​​ 解析 json

标签 ruby json parsing

我创建了以下类

  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'

我从 this 中提取了语法教程。

最佳答案

去掉 json_create 方法中的符号。

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

关于ruby - 无法用 ruby​​ 解析 json,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11232005/

相关文章:

javascript - 如何从 View 中删除逻辑

ruby - ruby-1.9.2.p290 或 ruby​​-1.9.3 中 ActiveRecord 对象克隆的更改

ruby - 计数方法在 Ruby 中如何工作?

json - 在 Perl 中从 JSON-String 解码哈希

java - 是否有一个好的 XML 解析器可以对 XML 文件进行光扫描以获取元素的字节偏移量?

ruby - 如何将电子表格 "letternamed"列坐标转换为整数?

java - 将列表序列化为 json 时出现异常

ruby-on-rails - rails : include related object in JSON output

javascript - 将包含数组数组的字符串转换为 JSON 对象

java - ANTLR4 替代规则的访问者方法