Bir hash serileştirmeye ve seri hale getirmeye çalışıyorum. Karma, deserailize edildiğinde, tuşlar de-sembolize edilir; Örneğin. daha fazla değil: bir, daha doğrusu "bir". raylar konsolundanActiveSupport :: JSON decode karma sembolleri kaybediliyor
:
>>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
şimdilik Marshal.dump/yük sonucu geçtik. Bununla birlikte, bunu JSON'da (okunabilirlik için) saklamanın bir yolu olup olmadığını görmek için dışarı atmak istedim. Bu anahtarlar sembolize değildir: o (ı varsayalım) asla ilk etapta dize anahtarlarını oluşturur ve dolayısıyla aynı tuşlarıyla büyük karmaları için bellek tasarrufu
Not sıklıkla tekrarlanan çünkü – TelegramSam
Ayrıca, JSONs nesnelerini içeren bir dizi için de çalışır, yani [['id': 1}, {'id': '2'}, ...] '. Tim Cull çözümü tho çalışıyor. – laffuste