使用序列化名称将ruby哈希序列化为json

时间:2019-04-04 10:22:34

标签: ruby

我的哈希看起来像:

require 'json'
h = {  :foo => 1, :bar => 1 }
h.to_json # will do '{ "foo" : 1, "bar" 1 }'

我发现最好的方法是重新输入密钥并进行序列化:https://stackoverflow.com/a/4137966/887836

在Java中,有一个注释可以将“ foo”重命名为“ Foo”以具有特定的序列化视图。在红宝石中有标准的方法吗? 如果可以的话,我更希望采用一种声明性的方式来指定它。

public class MyClass {
  @SerializedName("Foo") String foo;

  public MyClass(String foo) {
    this.foo = foo;
  }
}

1 个答案:

答案 0 :(得分:1)

我认为在您的问题中,您正在将“苹果”与“橙色”进行比较。在Java情况下,您有一个定义的类,可以在其中自由添加注释。然后,这些注释可以由gson之类的库使用,以自定义该类实例的序列化。

在红宝石案例中,您所谈论的是内置类(哈希)的实例,您无法随意对其进行注释(除非您想使用“ Hash”路径)。

如果您创建一个自定义类来表示您的Hash实例,那么您将打开更多选项,例如为类覆盖.to_json方法,甚至实现自己的delarive方案,例如在类中提供映射哈希。

如果您想坚持将数据作为Hash实例保存,那么我认为您应该坚持发现并在注释中提出的各种转换。