我在处理要在ruby中哈希的字符串的键值对时遇到问题。字符串为:
"specialties":["Corporate Housing","Temporary Housing","Furnished Apartment","Short Term Rentals"],"website":"http://www.demo.com","universalName":"some-corporate-housing","size":"51-200 employees","description":"demo description","industry":"Hospitality","companyType":"Privately Held","companyName":"some Corporate Housing","includeSecondAd":true,"yearFounded":1995,"headquarters":{"city":"Austin","zip":"78759","state":"Texas","street1":"9606 N. Mopac Expressway","country":"United States","street2":"Suite 500"},"homeUrl":"https://www.some.com/company/some-corporate-housing"
记住这是一个string.Now我想做一个哈希,如下所示:
"specialties":["Corporate Housing","Temporary Housing","Furnished Apartment","Short Term Rentals"],
"website":"http://www.demo.com",
"universalName":"some-corporate-housing",
"size":"51-200 employees",
"description":"demo description",
"industry":"Hospitality",
"companyType":"Privately Held",
"companyName":"some Corporate Housing",
"includeSecondAd":true,
"yearFounded":1995,
"headquarters":
{"city":"Austin",
"zip":"78759",
"state":"Texas",
"street1":"9606 N. Mopac Expressway",
"country":"United States",
"street2":"Suite 500"
},
"homeUrl":"https://www.some.com/company/cws-corporate-housing"
我已经搜索了很多并且使用split
了ruby string
class方法。
# test reffers to the string .
hash = {}
test.split(',').each do |pair|
key,value = pair.split(/:/)
hash[key.to_sym] = value
end
这给了我一个错误的哈希值,例如下面的波纹管:
hash["specialties"] #=> "Corporate Housing",
与specialties
数组一样,它应该具有所有值,但只返回第一个值。
我不明白如何将该字符串转换为适当的哈希。请帮助我。
提前非常感谢。
您可以将字符串括在大括号中{}
,然后使用json进行解析
require 'json'
json_str = "{#{ str }}"
hash = JSON.parse(json_str)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句