将Json(/hash)转换为Ruby对象?

3
在Javascript中,您可以将json作为对象访问。
person = {
  name: {
    first: "Peter",
    last: "Parker"
  }
}

person.name.first

在 Ruby 中,我必须像这样使用它:

person[:name][:first]

是否可以像在JavaScript中一样,将JSON(和哈希)作为对象进行访问?


1
我仍在学习Ruby,但要使person.name.first在Ruby中工作,这些需要成为方法。您可能需要覆盖Hash中的method_missing以在未找到属性时进行哈希查找。 - Anurag
@anurag,我想知道是否有一种方法可以在JSON和Ruby对象之间平滑地转换。 - never_had_a_name
据我所知,这样的方法很容易编写,而且很可能已经存在。主要思路是动态向给定的哈希实例添加方法。 - Anurag
4个回答

4
你应该看一下 Hashie gem。它可以让你做你想做的事情。它有一个 Mash 类,可以将 JSON 和 XML 解析后的哈希转换成对象式的访问方式。它实际上会深入到哈希中,将哈希内部的任何数组或哈希转换为对象。请访问 http://github.com/intridea/hashie

1

0

那不是他所要求的。 - Mark Murphy

0
JavaScript使用对象属性作为其实现的关联数组。因此,使用Ruby的哈希类型基本上是在做同样的事情。

如何像在Javascript中一样访问它作为一个对象? - never_had_a_name

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接