2010-08-29 104 views
3

在Javascript中,您可以访问json作为对象。Json(/哈希)以ruby对象?

person = { 
    name: { 
    first: "Peter", 
    last: "Parker" 
    } 
} 

person.name.first 

在红宝石我不得不使用它是这样的:

person[:name][:first] 

是否有可能访问JSON(和哈希)作为对象,就像在JavaScript?

+1

我仍然在学习Ruby,但要获得'person.name.first'在Ruby中工作,这些将需要的方法。当找不到属性时,您可能需要重写哈希中的'method_missing'以执行哈希查找。 – Anurag 2010-08-29 07:56:57

+0

@anurag。我不知道是否有一种方法可以顺畅地在json和ruby对象之间进行转换。 – 2010-08-29 08:02:29

+0

当然,根据我的理解,这种方法很容易写出来,而且很可能也会存在。主要想法是动态添加方法到给定的哈希实例。 – Anurag 2010-08-29 08:21:57

回答

4

你应该看看HASHIE宝石。它可以让你做你正在寻找的东西。它有一个Mash类,它接受JSON和XML解析哈希,并为您提供类似于对象的访问。它实际上深潜入哈希,将所述哈希内的任何阵列或散列等

http://github.com/intridea/hashie

0

JavaScript使用对象属性作为其关联数组的实现。所以,使用Ruby的散列类型基本上是做同样的事情。

+0

我如何像使用Javascript一样访问它? – 2010-08-29 07:56:25