考虑以下场景,我需要将很多大哈希放入数组中,然后将其转换为 json:
hash1 = { ... big hash ... }
hash2 = { ... big hash ... }
hash3 = { ... big hash ... }
array = [hash1, hash2, hash3]
json = JSON.dump(array)
问题是从这些哈希生成 json 需要很长时间,所以我想缓存它。但是,我不能缓存整个数组,只能缓存单独的项目。显然,将缓存的 json 字符串放入数组会产生不好的结果:
hash1 = {:a => 1}
hash1json = JSON.dump(hash1)
array = [hash1json]
JSON.generate(array)
==> ["{\"a\":1}"]
当我需要的时候
==> [{"a":1}]
我能想到的唯一方法是做这样的事情:
"[#{[hash1json].join(",")}]"
==> [{"a":1}]
对于这种特定情况,这可能就足够了,但是如果想要缓存一些深层结构而不是简单的数组,那就更难了。