Ruby   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ruby-on-rails – 将XML字符串转换为Rails中的哈希大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用一些返回xml的服务:
response = httparty.post(service_url)
response.parsed_response 
=> "\n\t<Result>\n<success>\ntrue\n</success>\n</Result>"

我需要将这个字符串转换成哈希.这样的东西

response.parsed_response.to_hash
=> {:result => { :success => true } }

这样做的方法

解决方法

内置的 from_xml Rails哈希方法将精确地做你想要的.为了让你的response.parsed_response正确映射到一个哈希,你需要gsub()的换行符:
hash = Hash.from_xml(response.parsed_response.gsub("\n","")) 
hash #=> {"Result"=>{"success"=>"true"}}

在解析Rails中的散列的上下文中,String类型的对象从一般编程的角度来看比来自Symbol的对象要多.但是,您可以将Rails symbolize_keys方法应用于输出:

symbolized_hash = hash.symbolize_keys
#=> {:result=>{"success"=>"true"}}

如你所见,symbolize_keys不对任何嵌套哈希进行操作,但是您可以遍历内部哈希值并应用symbolize_keys.

拼图的最后一块是将字符串“true”转换为布尔值true. AFAIK,没有办法在你的哈希中做到这一点,但是如果你正在迭代/操作它,你可能会实现像suggested in this post这样的解决方案:

def to_Boolean(str)
     return true if str == "true"
     return false if str == "false"
     return nil
end

基本上,当您到达内键值对时,您应该将值to_Boolean()应用于当前设置为“true”的值.在您的示例中,返回值为布尔值true.

大佬总结

以上是大佬教程为你收集整理的ruby-on-rails – 将XML字符串转换为Rails中的哈希全部内容,希望文章能够帮你解决ruby-on-rails – 将XML字符串转换为Rails中的哈希所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。