问题标签 [serialization]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
9 回答
32479 浏览

java - 如何将类型添加到 GWT 的序列化策略白名单?

GWT 的序列化程序支持有限java.io.Serializable,但出于安全原因,它支持的类型有一个白名单。我找到的文档,例如这个 FAQ 条目说你想要序列化的任何类型“必须包含在序列化策略白名单中”,并且该列表是在编译时生成的,但没有解释编译器如何决定白名单上发生了什么。

生成的列表包含许多属于标准库的类型,例如java.lang.Stringjava.util.HashMap。尝试序列化时出现错误java.sql.Date,它实现了Serializable接口,但不在白名单上。如何将此类型添加到列表中?

0 投票
3 回答
13551 浏览

java - 如何最好地序列化 java.awt.Image?

我有一个 Serializable 对象,它应该将 java.awt.Image 作为其成员。我应该如何序列化它? (从一个不太清楚的第一个版本编辑,对不起。)

0 投票
10 回答
5150 浏览

c - 以独立于语言的二进制格式序列化数据的最佳方法是什么?

我正在研究一种用于序列化数据的机制,该机制以独立于语言的机制通过套接字或共享内存传递。我不愿意使用 XML,因为这些数据将非常结构化,并且编码/解码速度至关重要。拥有一个良好的自由许可的 C API 很重要,但理想情况下应该支持大量其他语言。我查看了谷歌的协议缓冲区ASN.1。我在正确的轨道上吗?有更好的吗?我应该只实现自己的打包结构而不寻找一些标准吗?

0 投票
12 回答
33760 浏览

java - 使用 serialVersionUID 还是禁止警告?

我想创建一个类,例如,扩展 HttpServlet?我的编译器警告我,我的类应该有一个 serialVersionUID。如果我知道这个对象永远不会被序列化,我应该定义它还是添加注释来禁止这些警告?

你会做什么,为什么?

0 投票
8 回答
7687 浏览

json - JSON 编辑器/格式化程序?

我有一些 JSON 数据,但都在一条线上。有谁知道可以为我格式化(例如缩进和插入新行)这些数据的网络或 Windows 编辑器,以便我可以更好地阅读它?最好是使用 GUI 来显示 JSON,而不是使用命令行工具来输出重新格式化的文档,例如。

0 投票
1 回答
2557 浏览

c# - C# ResetBinding 翻转 DataGridView *用示例更新*

我遇到了一个部分解决的问题。快速解释一下:我有一个绑定到需要序列化的复杂对象的网格。从序列化中构建对象时,网格上的事件不会刷新表格显示。有人告诉我在反序列化后重建事件,它可以工作!但是刷新网格的事件似乎根本没有触发。

我必须从我的复杂对象构建一个事件,告诉我内部发生了一些变化。从这个事件我添加了这个代码:

问题是网格在翻转,用户感觉不好(行上下移动而不是停止)。

如何在没有这种翻转的情况下重置绑定?我怎样才能解决原来的问题?(这将自动解决所有问题)。

更新

这是一个执行完全相同行为的示例:

创建一个类:

现在,使用 BindingSource 调用“bindingSource1”创建一个表单,并使用该类作为数据源。创建一个网格并将该网格绑定到 bindingsource1。

在该表单中,在 load 中使用此代码:

我将序列化过程放在注释中,因为如果没有它,它似乎会出现同样奇怪的行为......现在启动应用程序。更改客户的名称。“新名称”的示例“p1”,然后单击已更改名称下的单元格。您将看到“len”列没有改变。但是,如果您单击具有 len 的单元格,您将看到数字变为正确的值。

有人知道为什么吗?

0 投票
8 回答
9230 浏览

java - java对象序列化在1.5和1.6之间是否兼容

我想知道混合 jdk 1.5 和 1.6(Java 6)对象序列化(双向通信)是否安全。我搜索了 sun 关于这个问题的明确声明,但没有成功。因此,除了技术可行性之外,我还在寻找有关该问题的“官方”声明。

0 投票
2 回答
842 浏览

c# - 是否有将源代码转回 CodeCompileUnit 的现有方法?

我们在我们自己的设计师中使用了 DesignSurface 和所有优秀的 IDesignerHost。然后将设计的表格以我们自己的定制格式保留,一切都很好。我们还希望将表单导出为基于文本的格式(我们已经这样做了,因为它并不难)。

但是,我们还希望将该文本导入设计器的文档中,这涉及将设计器代码返回到 CodeCompileUnit。不幸的是, Parse 方法没有实现(毫无疑问,有充分的理由)。有替代方案吗?我们不想使用标准 .NET 安装中不存在的任何东西(例如随 Visual Studio 安装的 .NET 库)。

我目前的想法是编译导入的文本,然后实例化表单并将其属性和控件复制到设计表面对象,然后捕获新的 CodeCompileUnit,但我希望有更好的方法。谢谢。


更新:我虽然有些人可能对我们的进展感兴趣。到目前为止,不太好。我发现的简要概述是 Parse 方法没有实现,因为它被认为太难了,存在可以完成工作的开源解析器,但它们并不完整,因此不能保证在所有情况下都能正常工作( NRefactory 是 SharpDevelop 项目中的一个,我相信),并且从实例到设计器的控件复制目前还没有工作。我相信这是因为尽管控件被添加到设计器表面包装的表单实例中,但设计器表面并没有意识到它们的包含。我们的下一个尝试是模拟剪切/粘贴,看看是否能解决它。显然,这是一个巨大的讨厌的解决方法,但我们需要它工作,所以我们'

0 投票
3 回答
5024 浏览

c# - C#中的设计时间序列化

我在 C# 中创建了一个非可视组件,它被设计为表单上元数据的占位符。
该组件有一个属性,它是自定义对象的集合,该对象被标记为可序列化,并实现了用于序列化的 GetObjectData 和用于反序列化的公共构造函数。

在表单的 resx 文件中,它将生成用于存储集合的二进制数据,但是每当我对序列化类进行更改时,我都会遇到设计器错误,需要从 resx 文件中手动删除数据,然后重新创建此数据。

我尝试更改构造函数以在类中的每个属性周围都有一个 try / catch 块

但它仍然崩溃。我得到的最后一个错误是我必须实现 IConvertible。

我更喜欢使用 xml 序列化,因为我至少可以看到它,设计师可以使用它吗?

有没有办法让序列化更稳定,对变化的抵抗力更小?

编辑:
更多信息...更好的描述也许
我有一个从组件继承的类,它有一个属性是规则的集合。RulesCollection 似乎必须标记为 Serializable,否则它不会保留其成员。

Rules 类也是一个组件,其属性为 DesignTimeVisible(false) 以阻止它显示在组件托盘中,该类未标记为 Serializable。

将集合标记为可序列化会在 resx 文件中生成二进制数据(不理想),并且 IDE 会报告规则类不可序列化。

我认为这个问题已经超出了一个简单的问题。所以我可能会很快关闭它。
如果有人有任何指向类似内容的链接,那将有很大帮助。

0 投票
5 回答
18607 浏览

asp.net - 如何从 ASP.NET Web 服务实现自定义 JSON 序列化?

从 WebService 返回自定义类的实例时,有哪些序列化选项?

我们有一些具有许多子集合类属性的类,以及可能根据使用情况设置或不设置的其他属性。这些对象是从用 ScriptService 属性修饰的 ASP.NET .asmx WebService 返回的,因此在由各种 WebMethods 返回时通过 JSON 序列化进行序列化。

问题是开箱即用的序列化返回所有公共属性,无论它们是否被使用,以及返回类名和其他信息的方式比你想要限制数量更详细交通。

目前,对于返回的类,我们添加了处理 JSON 序列化的自定义 javascript 转换器,并将它们添加到 web.config 中,如下所示:

但这需要每个类都有一个自定义转换器。是否有任何其他方法可以通过扩展服务、创建自定义序列化程序等来更改开箱即用的 JSON 序列化?

跟进
@marxidad:

我们在其他应用程序中使用 DataContractJsonSerializer 类,但是我一直无法弄清楚如何将它应用于这些服务。以下是如何设置服务的示例:

WebMethods 由 javascript 调用并返回 JSON 序列化的数据。我们能够更改序列化的唯一方法是使用上面提到的 javascript 转换器?

有没有办法告诉 WebService 使用自定义 DataContractJsonSerializer?是否通过 web.config 配置,用属性装饰服务等?

更新
好吧,除了像上面那样创建单独的 JavaScriptConverters 之外,我们找不到任何方法来切换开箱即用的 JavaScriptSerializer。

为此,我们为避免创建单独的转换器所做的是创建一个通用的 JavaScriptConverter。我们向我们想要处理的类添加了一个空接口,并且在 Web 服务启动时调用的 SupportedTypes 使用反射来查找实现该接口的任何类型,如下所示:

实际实现有点不同,因此类型被缓存,我们可能会重构它以使用自定义属性而不是空接口。

然而,在处理自定义集合时,我们遇到了一个稍微不同的问题。这些通常只是扩展一个通用列表,但使用自定义类而不是 List<> 本身,因为集合类中通常存在自定义逻辑、排序等。

问题是 JavaScriptConverter 的 Serialize 方法返回一个字典,该字典被序列化为 JSON 作为具有关联类型的名称值对,而列表作为数组返回。因此无法使用转换器轻松序列化集合类。解决方案是不将这些类型包含在转换器的 SupportedTypes 中,并且它们完美地序列化为列表。

因此,序列化有效,但是当您尝试以其他方式将这些对象作为 Web 服务调用的参数传递时,反序列化会中断,因为它们不能将输入视为字符串/对象字典列表,这可以' 不会被转换为集合包含的任何自定义类的列表。我们能找到解决这个问题的唯一方法是创建一个泛型类,它是一个字符串/对象字典列表,然后将列表转换为适当的自定义集合类,然后更改任何 Web 服务参数以使用泛型类.

我敢肯定这里有很多问题和违反“最佳实践”的行为,但它为我们完成了工作,而无需创建大量自定义转换器类。