如何将类似结构化对象的内容从一个复制到另一个?

时间:2017-09-18 22:09:20

标签: ruby

有两个不同的类。但是它们具有相似的结构,如果你要在json中表示每个类的实例,它将完全相同(当然它们也必须具有相同的值)。第一个对象,我没有生成,因为我正在为某些应用程序编写插件。我得到第一个对象,我想把它粘在另一个类/对象中。如何在不对每个字段执行此操作的情况下将一个对象复制到另一个对象:

  

new_object.field = other_object.field

其他更具体的细节: 我正在编写插件的应用程序是Logstash,第一个原始对象是他们的Logstash :: Event类,而我试图获取它的类/对象是protobuf生成的类。

1 个答案:

答案 0 :(得分:0)

如果查看 File removable = ContextCompat.getExternalFilesDirs(this, null)[1]; THE_PATH = String.valueOf(removable) 的文档,您会看到以下方法:

这些方法的源代码显示了您要实现的目标的基本原则:

LogStash::Event

换句话说,您在两个“相似”对象之间进行转换的实现可能类似于:

def from_json(json)
  return self.new(JSON.parse(json))
end

def to_json(*args)
  return @data.to_json(*args) 
end

类之间的这种转换不一定需要用JSON完成;它可以是XML或YAML或任何其他任意数据格式。但是库已经支持JSON,所以似乎是显而易见的选择。