ActiveSupport :: JSON解码哈希丢失符号

时间:2011-03-04 15:00:10

标签: ruby-on-rails ruby json

我试图序列化和反序列化哈希。当散列被去分层时,密钥被去符号化;例如不是更多:一个,而不是一个"。

来自rails console:

>>h = { :one =>1, :two => "two"}
{:one=>1, :two=>"two"}
>>j = ActiveSupport::JSON.encode(h)
"{\"one\":1,\"two\":\"two\"}"
>>h2 = ActiveSupport::JSON.decode(j)
{"one"=>1, "two"=>"two"}
>>h2[:one]
nil
>>h[:one]
1

我现在已切换到使用Marshal.dump / load。但是,我想把它扔出去看看是否有办法将它保存在JSON中(仅为了可读性)。

2 个答案:

答案 0 :(得分:18)

JSON.parse(j, {:symbolize_names => true})应该稍好一点,因为它(我假设)从不在第一个地方创建字符串键,从而为经常重复使用相同键的大哈希节省内存

答案 1 :(得分:8)

h2 = ActiveSupport::JSON.decode(j).symbolize_keys