对此已有类似的问题,但我对答案不满意,因为我正在尝试做一些更复杂的事情。
我有提供列表/单个对象的Web服务。对象是用户,类别等。以下是对象的示例:
<UserObject name="foo" description="bar" category=<Category name="cat1" description="bar"> locations=[<Location id=1>, <Location id=2>] >
换句话说,对象有点复杂,可以是这些对象的数组。我正在寻找一种方法:
序列化对象的服务不是ROR。 正在接收和反序列化对象的应用程序是ROR。
必须有一些通用的方法来执行此操作,我尝试使用to_json
和JSON.parse
,但它只将对象反序列化为一个级别。所以例如上面我会得到:
<OpenStruct name="foo" description="bar" category="{\"name\"... JSON STRING}" locations="JSON STRING">
我希望在对象内部获取原始对象,而不是JSON STRING。
Ruby:1.9.3
由于
答案 0 :(得分:2)
看看oj宝石。它允许您对来自json的ruby对象进行序列化和反序列化。它还具有非常快的优点。
答案 1 :(得分:0)
在研究了oj宝石并联系了它的创造者彼得·奥勒(Peter Ohler)之后,他非常友善和帮助,我能够获得理想的效果。
require 'oj'
# user instance is nested instance
json_string = Oj.dump user
# send over http
# de-serialize without domain classes (classes created by Oj gem)
user = Oj.load(json_string, { :auto_define => true })
感谢@ josh-voigts让我知道宝石。