考虑 JavaScript 中的以下类:
Tools.UserBase = Tools.Class.define("Tools.UserBase", Tools.EntityBase, {
UserId: { type: System.Int32, key: true, computed: true },
IsActive: { type: System.Boolean },
IsAdmin: { type: System.Boolean },
UserName: { type: System.String },
UserToken: { type: System.Guid },
init: function () {
Tools.EntityBase.call(this, arguments);
},
onEndEdit: function () {
if (this.IsActive == false && this.IsAdmin == true) {
throw new Error("Can't disable admin user");
}
this.parentClass.onEndEdit();
}
});
当我执行这段代码时:
var user = new Tools.UserBase()
我会得到以下结果:
UserBase {
IsActive: false
IsAdmin: false
UserId: 0
UserName: ""
UserToken: "00000000-0000-0000-0000-000000000000"
__BackingField__IsActive: false
__BackingField__IsAdmin: false
__BackingField__UserId: 0
__BackingField__UserName: ""
__BackingField__UserToken: "00000000-0000-0000-0000-000000000000"
__proto__: PrototypeConstructor }
然后我使用以下命令从用户对象创建 json。
JSON.stringify(user)
我得到以下结果:
""__BackingField__UserId":0,"__BackingField__IsActive":false,"__BackingField__IsAdmin":false,"__BackingField__UserName":"","__BackingField__UserToken":"00000000-0000-0000-0000-000000000000"}"
正如您所看到的,它使用其字段而不是其属性来序列化我的对象。
而且我根本无法控制序列化过程。
反序列化过程是相同的,JSON.parse 将创建一个普通对象而不是类型化对象。
(我并不是说它应该做我想做的事,我正在寻找适合我的情况的解决方案)
有没有适合我需求的 JavaScript 库?就像 .NET 中的 Newtonsoft 一样?
提前致谢。