我目前正在尝试使用Json将我的数据库与另一个数据库同步,但我遇到了他们正在使用的密钥问题。
def sync
url = '...' # Returns "{ "class": 20, "user": "John" }"
uri = URI(url)
response = Net::HTTP.get(uri)
response_hash = JSON.parse(response)
...
他们在回复中使用关键字“class”,但我认为我不允许这样做,所以我将其作为'cls'。现在,如果我尝试创建一个新用户,我会收到错误,因为它无法将“类”映射到任何内容。
我一直在尝试更改密钥以匹配我的新密钥,但一直无法使其工作。
使用答案等因某些原因无效。
pattern = { "class" => "cls" }
response_hash.inject({}) do |new_hash, (k, v)|
key = pattern[k] || k
new_hash[key] = v
new_hash
end
但我确实注意到我有一个Hash
,而有些示例创建了一个HashWithIndifferentAccess
,所以他们可以response_hash[:class]
,但我只会返回nil
这个问题的最佳解决方案是什么?理想情况下,我不必重新映射任何键,只需将Json放入我的数据库即可。
感谢您的帮助。
答案 0 :(得分:2)
只需这样做
response_hash['cls'] = response_hash.delete('class')
结果将是{ :cls => 20, :user => "John" }
,您可以将其直接输入数据库。