我有一个带有一些参数的 class,我想使用来自 JSON 文件的数据来填充这些参数
I have a class with some parameters that I'd like to be filled using data from a JSON file
我正在尝试创建一个垄断管理器来获得乐趣,并且我在 JSON 文件中拥有所有图块的数据,我想用它来迭代和使用数据。我目前有这个代码:
require 'json'
file = File.read('monopoly-data.json')
data_hash = JSON.parse(file)
data = data_hash['properties'].sort_by{ |e| e['id'].to_i }
class Property
attr_accessor :id, :group, :colour, :name, :price, :rent, :house_price, :mortage
def initialize(params = {})
@id = params[:id]
@group = params[:group]
@colour = params[:colour]
@name = params[:name]
@price = params[:price]
@rent = params[:rent]
@house_price = params[:house_price]
@mortage = params[:mortage]
end
end
JSON 文件是 in this gist。
我一直无法弄清楚如何使用 JSON 数据来创建更多属性,我在数据上使用 for
循环,data.each
尝试自动制作这样的东西:
parkveien = Property.new(
id: 1,
group: 'property',
colour: 'brown',
name: 'Parkveien',
price: 1200,
rent: [40, 200, 600, 1800, 3200, 5000],
house_price: 1000,
mortage: 600
)
但是我不知道该怎么做,我们将不胜感激任何帮助!
您可以使用 each
生成 属性 个对象并将它们收集到一个数组中。
properties = []
data.each { |property| properties << Property.new(property) }
然后您可以根据需要使用 select
访问数组中的各个属性。
properties.select { |property| property.name == "Parkveien" }
此外,由于数据哈希中的键是字符串,因此您需要更改初始化以使用字符串而不是符号:
def initialize(params = {})
@id = params["id"]
@group = params["group"]
@colour = params["colour"]
@name = params["name"]
@price = params["price"]
@rent = params["rent"]
@house_price = params["house_price"]
@mortage = params["mortage"]
end
我正在尝试创建一个垄断管理器来获得乐趣,并且我在 JSON 文件中拥有所有图块的数据,我想用它来迭代和使用数据。我目前有这个代码:
require 'json'
file = File.read('monopoly-data.json')
data_hash = JSON.parse(file)
data = data_hash['properties'].sort_by{ |e| e['id'].to_i }
class Property
attr_accessor :id, :group, :colour, :name, :price, :rent, :house_price, :mortage
def initialize(params = {})
@id = params[:id]
@group = params[:group]
@colour = params[:colour]
@name = params[:name]
@price = params[:price]
@rent = params[:rent]
@house_price = params[:house_price]
@mortage = params[:mortage]
end
end
JSON 文件是 in this gist。
我一直无法弄清楚如何使用 JSON 数据来创建更多属性,我在数据上使用 for
循环,data.each
尝试自动制作这样的东西:
parkveien = Property.new(
id: 1,
group: 'property',
colour: 'brown',
name: 'Parkveien',
price: 1200,
rent: [40, 200, 600, 1800, 3200, 5000],
house_price: 1000,
mortage: 600
)
但是我不知道该怎么做,我们将不胜感激任何帮助!
您可以使用 each
生成 属性 个对象并将它们收集到一个数组中。
properties = []
data.each { |property| properties << Property.new(property) }
然后您可以根据需要使用 select
访问数组中的各个属性。
properties.select { |property| property.name == "Parkveien" }
此外,由于数据哈希中的键是字符串,因此您需要更改初始化以使用字符串而不是符号:
def initialize(params = {})
@id = params["id"]
@group = params["group"]
@colour = params["colour"]
@name = params["name"]
@price = params["price"]
@rent = params["rent"]
@house_price = params["house_price"]
@mortage = params["mortage"]
end