我正在尝试序列化和反序列化一个哈希。当哈希进行反序列化时,键将被去除符号化;例如不再是 :one,而是 "one"。
从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格式中(只是为了可读性)。
JSON.parse(j, {:symbolize_names => true}).with_indifferent_access
。请注意,这仅适用于Rails,因此例如由后台进程执行的普通Ruby类可能无法访问ActiveSupport定义的Hash方法.with_indifferent_access
。 - Magne