我们知道Ruby具有符号功能,通常将符号用作散列键,以节省空间与字符串对象。说:
myhash[:mykey] = "myvalue"
但是如果我从json字符串加载一个哈希,请说:
str = '{"mykey": "myvalue"}'
myhash = JSON.parse(str)
然后我必须使用字符串键来访问哈希:
puts myhash["mykey"] # myvalue
这合理吗?为什么JSON.parse只是为哈希键添加符号?
答案 0 :(得分:1)
将键作为字符串返回是JSON
默认行为。您可以通过提供额外的symbolize_names
参数来覆盖。
str = '{"mykey": "myvalue"}'
JSON.parse(str)
#=> {"mykey"=>"myvalue"}
JSON.parse(str, {:symbolize_names => true})
#=> {:mykey=>"myvalue"}
正如@Matt所说,在他的评论中,如果密钥碰巧有空格(例如:我的密钥),它会将其键入为 - :"my key"
。