在 Sinatra Web 应用程序中,我试图从 DB 获取数据并将它们转换为 UI 可接受的对象(最后转换为 JSON)。但是 UI 和 DB 字段所需的属性名称存在一些差异。所以我使用了带有别名的 Sequel 查询:
Sequel::Model.plugin :json_serializer
class Alarm < Sequel::Model
# attr_accessor :id, :Alarm
end
filter = Alarm.filter(:NEName => params[:name]).select(:AlarmNo___id, :AlarmMsg___Alarm).all
但是当我尝试进行这种转换时:
res = filter.to_json
我得到:**undefined method** 'id' for # Alarm:0x000000027403e0
我还尝试向模型添加访问器(请参阅注释掉的行)
attr_accessor :id, :Alarm
并得到很多这样的对象:{"json_class":"Alarm","id":null,"Alarm":null}
,这似乎是合乎逻辑的结果。
那么,Q1:如何使用 json_serializer 插件使续集别名工作?
Q2:可能有一些其他解决方案来提供这种映射(不创建新类和/或添加额外的转换方法) - 比如通过 to_json 方法中的选项影响 json 属性名称等