从json字符串加载的哈希的键

时间:2013-12-06 06:33:57

标签: ruby

我们知道Ruby具有符号功能,通常将符号用作散列键,以节省空间与字符串对象。说:

myhash[:mykey] = "myvalue"

但是如果我从json字符串加载一个哈希,请说:

str = '{"mykey": "myvalue"}'
myhash = JSON.parse(str)

然后我必须使用字符串键来访问哈希:

puts myhash["mykey"]  # myvalue

这合理吗?为什么JSON.parse只是为哈希键添加符号?

1 个答案:

答案 0 :(得分:1)

将键作为字符串返回是JSON默认行为。您可以通过提供额外的symbolize_names参数来覆盖。

str = '{"mykey": "myvalue"}'
JSON.parse(str)
#=> {"mykey"=>"myvalue"}

JSON.parse(str, {:symbolize_names => true})
#=> {:mykey=>"myvalue"}

正如@Matt所说,在他的评论中,如果密钥碰巧有空格(例如:我的密钥),它会将其键入为 - :"my key"