在Ruby中将一个键值对字符串转换为哈希表

3

我有一个问题,需要在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"

记住它是一个字符串。现在我想创建以下哈希:
"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"

我进行了大量搜索,并使用了Ruby字符串类的split方法。就像以下代码:

# 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应该包含所有的值,但是它只返回了第一个值。
我不知道如何将这个字符串转换成正确的哈希表,请大家帮帮我。
非常感谢您的帮助。
1个回答

6
您可以将字符串用大括号 {} 括起来,然后使用 json 进行解析。
require 'json'
json_str = "{#{ str }}"
hash = JSON.parse(json_str)

1
你让我开心极了,太感谢了。我真是太蠢了,这么简单的小技巧却运行得很好。再次感谢你啊。 - monsur
1
很高兴能帮忙 :) - Santhosh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接