【发布时间】:2012-04-21 07:30:10
【问题描述】:
我需要使用 localStorage 来存储一些 Ember 对象。我注意到 Ember 对象的属性名称类似于 __ember1334992182483。当我在 Ember 对象上调用 JSON.stringify() 时,这些 __ember* 属性不会序列化。为什么是这样?我并不是说我想序列化这些属性。我只是好奇它们到底是什么以及它们是如何实现的,因此它们不会被序列化。
我正在使用 cycle.js (https://github.com/douglascrockford/JSON-js/blob/master/cycle.js) 将包含重复引用的数据结构编码为可用于重建原始数据结构的字符串。它可以让你这样做:
a = {a:1}
b = {b:1}
c = [[a, b], [b, a]]
foo = JSON.stringify(JSON.decycle(c)) // "[[{'a':1},{'b':1}],[{'$ref':'$[0][1]'},{'$ref':'$[0][0]'}]]"
JSON.retrocycle(JSON.parse(foo)) // reconstruct c
对于 Ember 对象,我可以做同样的事情,但我还需要将反序列化的对象传递给 Ember.Object.create(),因为它们被反序列化为纯 JavaScript 对象。
这是序列化/反序列化 Ember 对象的最佳方式吗?对此有推荐的技术吗?
【问题讨论】:
标签: serialization deserialization ember.js