将树状结构打包成饼干

时间:2012-02-03 11:38:03

标签: javascript serialization

我希望能够在cookie中存储树状结构。理想情况下,我希望能够轻松地实现/反序列化javascript普通对象。

JSON可能是一个不错的选择,但是快速的Google搜索没有过滤出如何从JavaScript序列化为JSON的主流方法。

解决问题的最佳方法是什么?

UPD

相关问题冒出Javascript / PHP cookie serialization methods?,建议使用Prototype的Object.toJSON。我更愿意继续使用jQuery。

UPD2

事实证明window.JSON.stringify在我的情况下实际上可能就足够了,但提到Douglas Crockford的库似乎是支持全局对象的JSON属性不存在的浏览器的良好后备。

3 个答案:

答案 0 :(得分:3)

JSON是你的朋友。

Douglas Crockford提供的免费且公认的实施方案here

我已经使用这种方法来读取和存储到HTML5的本地存储而没有任何问题。

答案 1 :(得分:1)

JSON无疑是一个不错的选择。要让它跨浏览器工作,请在页面https://github.com/douglascrockford/JSON-js/blob/master/json2.js中包含此文件。然后使用JSON.stringify()转换为字符串和存储,使用JSON.parse()从cookie中检索对象。

请注意,quite low character limits on a single cookie's length可能会出现任何jsonified树,因此您可能希望在转换为JSON之前预处理数据(例如,用1和0替换布尔值,切换缩写版本的属性名称)并且在从cookie中检索后进行后处理以反转这些更改。

如果您存储的数据量非常大,最好存储会话/标识符cookie,用于通过ajax请求从服务器检索数据(或者如果您需要在页面上快速响应)加载,将数据输出到脚本标记中)并通过ajax请求将数据直接保存到服务器,而不是使用cookie。

答案 2 :(得分:0)

作为jQuery插件的另一个JSON序列化实现:http://code.google.com/p/jquery-json/