gpt4 book ai didi

ruby - 续集 JsonSerializer 与别名冲突

转载 作者:数据小太阳 更新时间:2023-10-29 08:54:01 27 4
gpt4 key购买 nike

在 Sinatra Web 应用程序中,我试图从数据库中获取数据并将它们转换为 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 属性名称等

最佳答案

您应该像这样定义 id 和 Alarm 方法实例方法:

class Alarm < Sequel::Model
def id() self[:id] end
def Alarm() self[:Alarm] end
end

attr_accessor 不起作用,因为它查找实例变量,而不是 @values 哈希中的条目。 Sequel::Model#[] 在 @values 散列中查找具有相同名称的条目。

关于ruby - 续集 JsonSerializer 与别名冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5990012/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com