【发布时间】:2020-01-17 19:41:39
【问题描述】:
我有适用于单个实例的代码,但我正在使用的 API 返回一个数据数组。我有一个类来封装这些数据:
class Brewery
include ActiveModel::Serializers::JSON
attr_accessor :id, :name
def attributes=(hash)
hash.each { |key, value| send("#{key}=", value) }
end
def attributes
instance_values
end
end
而且返回的数据长什么样子是这样的
[
{
"id": 2,
"name": "Avondale Brewing Co"
},
{
"id": 44,
"name": "Trim Tab Brewing"
}
]
我可以使用如下代码将单个 JSON 哈希编组到类:
brewery = Brewery.new
brewery.from_json(single_brewery)
但是这不适用于数组。我对 Ruby 比较陌生,所以我不太确定要使用的函数是什么,或者至少将 JSON 哈希完成到可以映射 from_json 的数组中。
这可行,但看起来很笨重
breweries = JSON.parse(brewery_list).map { |b|
brewery = Brewery.new
brewery.from_json(b.to_json)
}
【问题讨论】:
-
我开始写一个答案,展示如何根据您的需要对
ActiveModel::Serializers::JSON模块进行猴子补丁,但老实说,我建议您为此编写自己的模块,因为功能不会那么复杂听起来你已经知道自己需要什么了。
标签: ruby active-model-serializers activemodel