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

我正在尝试序列化和反序列化哈希。 当散列被去细化时,密钥被去符号化; 例如,不是更多:一个,而不是“一个”。

从rails控制台:

>>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中(仅为了可读性)。

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

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