我查看了不同的资源,但仍然对如何将json格式解析为自定义对象感到困惑
class Resident
  attr_accessor :phone, :addr
  def initialize(phone, addr)
      @phone = phone
      @addr = addr
  end
end    
和JSON文件
{
  "Resident": [
    {
      "phone": "12345",
      "addr":  "xxxxx"
    }, {
      "phone": "12345",
      "addr": "xxxxx"
    }, {
      "phone": "12345",
      "addr": "xxxxx"
    }
  ]
}
将json文件解析为3 Resident对象数组的正确方法是什么?
JGu*_*ezC 67
今天我正在寻找将json转换为物体的东西,这就像一个魅力:
person = JSON.parse(json_string, object_class: OpenStruct)
这样你就可以做到person.education.school或者person[0].education.school如果响应是一个数组
我要把它留在这里因为对某人有用
KAR*_*ván 33
以下代码更简单:
require 'json'
data = JSON.parse(json_data)
residents = data['Resident'].map { |rd| Resident.new(rd['phone'], rd['addr']) }
如果您正在使用,ActiveModel::Serializers::JSON您只需调用from_json(json),您的对象就会映射到这些值。
class Person
  include ActiveModel::Serializers::JSON
  attr_accessor :name, :age, :awesome
  def attributes=(hash)
    hash.each do |key, value|
      send("#{key}=", value)
    end
  end
  def attributes
    instance_values
  end
end
json = {name: 'bob', age: 22, awesome: true}.to_json
person = Person.new
person.from_json(json) # => #<Person:0x007fec5e7a0088 @age=22, @awesome=true, @name="bob">
person.name # => "bob"
person.age # => 22
person.awesome # => true
| 归档时间: | 
 | 
| 查看次数: | 35900 次 | 
| 最近记录: |