gpt4 book ai didi

javascript - 类似 Python 的完整 Javascript 对象的 pickle

转载 作者:IT老高 更新时间:2023-10-28 21:04:37 29 4
gpt4 key购买 nike

是否有任何 Javascript 序列化框架可以保留类和引用信息,如 Python pickle ? IE。可以直接获取一个原型(prototype)继承类实例(不仅仅是类似 JSON 的数据)并像这样序列化它::

 // Somehow add serialization metadata to classes first
obj = new MyObject();
obj.referred = new MyObject2();
pickle = serializer.dump(obj) // Provides byte stream of the serialized object

序列化器可以处理

  • 在 pickle 中编码类信息 - 由于存在不同的 JS 类系统,这应该可以以某种方式自定义

  • 自动跟踪和序列化引用的对象

  • 提供 Hook 来为值添加自定义编码器/解码器(日期是最常见的情况)

这将使复杂数据结构的内部存储和传输变得更容易一些。我希望在游戏引擎中使用它。与 pickle 一样,如果没有提供类定义的原始 Javascript 代码,数据的反序列化是不可能的。

已经存在什么样的 JavaScript 框架,或者我需要推出自定义系统?

最佳答案

它不完全适合,但您可以尝试使用 occamsrazor.js .这样做你可以使用 JSON 序列化:

// this is your costructor function
function Circle(attrs){
this.radius = attrs.radius;
}
Circle.prototype.area = function (){
return this.radius*this.radius*Math.PI;
}
Circle.prototype.perimeter = function (){
return 2*this.radius*Math.PI;
}

// this is a validator
function hasRadius(obj){
return radius in obj;
}

// this is your factory function
objFactory = occamsrazor().addContructor(hasRadius, Circle);

// this is your deserialized object
var json = '{"radius": 10}';

// circle now is a full fledged object
var circle = objFactory(JSON.parse(json));

缺点是您不会像使用pickle那样获得对象的快照,而是重新创建一个新对象。但在某些情况下可能会很方便。

关于javascript - 类似 Python 的完整 Javascript 对象的 pickle ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15206153/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com