查找具有属性支持的 JavaScript 库,用于在 JavaScript 中序列化和反序列化对象

2024-01-20

考虑 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 一样?

提前致谢。


而且我根本无法控制序列化过程。

是的你是。给你上课atoJSON返回具有预期属性的对象的方法,它将是被认可JSON.stringify https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/stringify#toJSON_behavior.

反序列化过程是相同的,JSON.parse 将创建一个普通对象而不是类型化对象。

因为 JSON 确实代表普通对象,所以这是很自然的:-) 不过,您可以传递一个reviver功能为JSON.parse https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON/parse,它可以操作返回的对象并将它们交换为类实例。为了方便起见,添加一个(静止的)fromJSON功能 https://stackoverflow.com/a/11810861/1048572到您的班级,您可以在恢复器中使用它。

有没有适合我需求的 JavaScript 库?

大多数 MVC JavaScript 库都为其模型内置了序列化/反序列化方法。您可以使用其中之一或从他们的代码中获得灵感来扩展您的Tools.Class suite.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

查找具有属性支持的 JavaScript 库,用于在 JavaScript 中序列化和反序列化对象 的相关文章

随机推荐

  • 在哪里可以找到张量流预训练模型(列表或下载链接)

    我开始使用英特尔 movidius 神经计算棒 就我而言 要开始工作 有必要下载预训练的模型 在他们提到的教程中http download tensorflow org models http download tensorflow org
  • 整数对的唯一哈希公式

    我想我可以使用 Cantor 创建一个独特的哈希 n x y x y x y 2 但我可以反转这个哈希值吗 如果没有 有人可以为可逆哈希提供类似的公式对吗 Thanks 如果 x y 和 n 都是相同的数据类型 n x y x y x y
  • Python 与 matplotlib - 重用绘图函数

    我对此有一个后续问题question https stackoverflow com questions 1401102 python with matplotlib drawing multiple figures in parallel
  • 本地化组名称

    我想通过向 Everyone 组分配权限来配置互斥访问规则 当我创建规则时 它看起来类似于以下内容 new MutexAccessRule Everyone MutexRights Modify MutexRights Synchroniz
  • 使用 CUPS 进行 Zebra 打印,不打印 ZPL 或 EPL

    我有一台 Zebra GK420d 通过 CUPS 连接到 OS X 但是 当我向其发送以 ZPL 或 EPL 编写的文件时 它们仅以纯文本形式打印 我需要更改打印机模式吗 与其他人所说的相反 您不需要专门添加原始队列 相反 您可以使用以下
  • 理解 SwiftUI 中的 @Binding

    我观看了一些关于数据绑定的WWDC视频和Apple文档 根据我目前的理解 State作为属性委托将提供视图和带注释的属性之间的绑定连接 例如 State var myText String var body some View VStack
  • PyGame 使 Linux 陷入困境?

    当我运行 pygame 代码时 它会使系统陷入困境 PyGame 变得无响应 并且它使 Ubuntu 的速度大大减慢 以至于我不得不强制关闭两次 我在这里发布了一个非常相似的问题 为什么我的基本 PyGame 模块这么慢 https sta
  • 如何内嵌文本旋转 90 度

    如何在不使用样式表的情况下将文本旋转 90 度 我已将以下说明放置在页面的标题区域中 然后我在相关段落周围放置了以下内容 div p My paragraph p div 但它不起作用 因此我的问题 这是一个小的视觉示例 rotate te
  • 谷歌地图不显示

    我需要在我的 php 页面地图上实现 我有容器 div div 它位于其他 div 内 我将这段代码放入其中标签 但根本不显示 有谁能够帮助我
  • 如何将表转换为 Spark Dataframe

    在 Spark SQL 中 可以使用以下命令将数据帧作为表进行查询 sqlContext registerDataFrameAsTable df mytable 假设我有的是mytable 我如何获取或访问它作为 DataFrame 最干净
  • 如何在 Swift 中规范化 UIImage 的像素值?

    我们正在尝试使UIImage以便它可以正确传递到 CoreML 模型中 我们从每个像素检索 RGB 值的方法是首先初始化一个 CGFloat 数组称为rawData每个像素的值 这样就有一个红色 绿色 蓝色和 alpha 值的位置 在bit
  • ANSI 颜色在带有 PowerShell 的 VSCode 集成终端中不起作用

    我正在为我的 python 项目使用 Visual Studio Code 并且我也在使用片状天堂 https flakeheaven readthedocs io en latest 未维护的分叉弗莱克地狱 https github co
  • 将 python BOTO 与 AWS SQS 结合使用,返回无意义的字符

    因此 我使用 python 和 BOTO 来访问我的 AWS SQS 我在 SQS 中有一些消息 我可以从 AWS 仪表板看到这些消息 然而 当我尝试通过 python 获取这些消息时 出现的字符只是乱码 知道这是怎么回事吗 conn bo
  • 在中继器内更新图像的 ImageUrl

    我希望有一个人可以帮助我 恐怕这是一个相当新手的问题 我在中继器中有一个图像 我想根据传递给它的参数更改其 IMAGEURL
  • 使用 Clipper 库 (c++) 进行线和多边形裁剪返回空路径

    我正在尝试使用 Clipper 库按线分割多边形 执行裁剪后 返回空路径 有人可以建议正确的方法来做同样的事情吗 Paths clip 2 soln clip 0 lt lt IntPoint 264 210 lt lt IntPoint
  • 在 Python 中下载 Sharepoint Excel 文件

    我正在尝试使用 Python 脚本从 SharePoint 存储库下载 Excel 文件 我正在使用 Office365 Rest Python Client 如示例中所定义https github com vgrem Office365
  • 在 Vista 上捕获“程序停止运行”

    在 Vista 上 我遇到了应用程序崩溃处理程序的问题 基本上 如果发生 SEH 无法捕获的意外情况 我会收到此弹出窗口 其中包含 应用程序停止工作 blablabla 关闭程序 调试程序 也就是说 在我使用系统控制面板 启用错误报告后 您
  • 如何获取图像的亮度梯度

    我正在努力通过图像亮度检查来理解图像 我尝试通过下面的代码找到图像的亮度 def brightness im file im Image open im file stat ImageStat Stat im r g b stat rms
  • 使闪亮的 dateInput 返回 NULL 或空字符

    我正在开发一个闪亮的应用程序 它允许用户从input插入 SQL Server 数据库 我想要做的一件事是删除当前存在的日期 为此 我需要一种方法来通过NULL NA or 某物我可以用它来将数据库中的值设置为 NULL dateInput
  • 查找具有属性支持的 JavaScript 库,用于在 JavaScript 中序列化和反序列化对象

    考虑 JavaScript 中的以下类 Tools UserBase Tools Class define Tools UserBase Tools EntityBase UserId type System Int32 key true