Mik*_*maa 19 javascript python serialization json pickle
是否有任何Javascript序列化框架可以保留像Python pickles这样的类和参考信息?即,可以直接采用原型继承的类实例(不仅仅是类似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
Run Code Online (Sandbox Code Playgroud)
序列化器可以照顾
在pickle中编码类信息 - 由于存在不同的JS类系统,这应该以某种方式可定制
自动跟踪和序列化引用的对象
提供钩子来为值添加自定义编码器/解码器(日期是最常见的情况)
这将使复杂数据结构的内部存储和传输变得更容易一些.我希望在游戏引擎中使用它.与pickle一样,如果没有提供类定义的orignal Javascript代码,则无法对数据进行反序列化.
Javascript已存在哪种类型的框架,或者我需要推出自定义系统?
小智 4
它并不完美,但您可以尝试使用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));
Run Code Online (Sandbox Code Playgroud)
缺点是您无法像使用 pickle 那样获得对象的快照,而是重新创建一个新对象。但在某些情况下可能会很方便。
| 归档时间: |
|
| 查看次数: |
3680 次 |
| 最近记录: |