内置的from_xml
RailsHash
方法将准确地完成您想要的操作。为了使您response.parsed_response
正确映射到哈希,您需要gsub()
换行:
hash = Hash.from_xml(response.parsed_response.gsub("\n", ""))
hash #=> {"Result"=>{"success"=>"true"}}
在 Rails 中解析散列的上下文中,String
类型对象与从一般编程角度来看的对象没有本质区别。Symbol
但是,您可以将 Railssymbolize_keys
方法应用于输出:
symbolized_hash = hash.symbolize_keys
#=> {:Result=>{"success"=>"true"}}
如您所见,symbolize_keys
它不会对任何嵌套散列进行操作,但您可能会遍历内部散列并应用symbolize_keys
。
难题的最后一块是将字符串转换"true"
为布尔值true
。AFAIK,没有办法在您的哈希上执行此操作,但是如果您正在对其进行迭代/操作,您可能会实施类似这篇文章中建议的解决方案:
def to_boolean(str)
return true if str == "true"
return false if str == "false"
return nil
end
基本上,当您到达内部键值对时,您将应用to_boolean()
到当前设置为"true"
. 在您的示例中,返回值是 boolean true
。