问题标签 [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 投票
2 回答
2331 浏览

java - 测试序列化编码

验证/测试文本字符串是否被序列化为具有特定编码的字节数组的最佳方法是什么?

就我而言,我想验证 XML 结构是否被序列化为具有可变字符长度的 UTF-8 编码的字节数组。例如,我目前的丑陋程序是在序列化之前将一个已知需要两个字节的字符注入结构中,然后用 ASCII 字符替换两个字节的字符并比较序列化的数组长度。这应该产生两个序列化数组,其中包含两字节字符的数组的长度应该是 +1。

另外,如果该解决方案对 Java 来说很优雅。我想不出任何优雅的方式来寻找字节数组中的字节序列。(可用于在 UTF-8 中寻找表示所需字符表示的已知字节序列。)

0 投票
3 回答
16156 浏览

c# - FileNotFoundException for mscorlib.XmlSerializers.DLL, which doesn't exist

I'm using an XmlSerializer to deserialize a particular type in mscorelib.dll

This throws a caught FileNotFoundException when the assembly is loaded:

"Could not load file or assembly 'mscorlib.XmlSerializers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089' or one of its dependencies. The system cannot find the file specified."

FusionLog:

As far as I know there is no mscorlib.XmlSerializers.DLL, I think the DLL name has bee auto generated by .Net looking for the serializer.

You have the option of creating a myApplication.XmlSerializers.DLL when compiling to optimise serializations, so I assume this is part of the framework's checking for it.

The problem is that this appears to be causing a delay in loading the application - it seems to hang for a few seconds at this point.

Any ideas how to avoid this or speed it up?

0 投票
6 回答
68186 浏览

c# - 我可以序列化 C# 类型对象吗?

我正在尝试通过以下方式序列化 Type 对象:

当我这样做时,对 Serialize 的调用会引发以下异常:

“类型 System.Text.StringBuilder 不是预期的。使用 XmlInclude 或 SoapInclude 属性指定静态未知的类型。”

有没有办法让我序列化Type对象?请注意,我不是要序列化StringBuilder自身,而是Type包含有关StringBuilder该类的元数据的对象。

0 投票
4 回答
3154 浏览

c# - 大型复杂对象作为 Web 服务结果

女士们,先生们,你们好!

好的,继续我关于ASP.NET Web Service Results, Proxy Classes and Type Conversion的其他问题。我已经进入了我的项目的一部分,我需要让我的思考上限。

基本上,我们有一个大而复杂的自定义对象,需要从 Web 服务返回并在客户端应用程序中使用。

现在,根据前面的讨论,我们知道这将采用代理类的形式作为返回类型。为了克服这个问题,我们需要基本上将属性从一个复制到另一个。

在这种情况下,那是我真的,​​真的,真的!喜欢避免!

所以,这让我想,我们还能怎么做呢?

我目前的想法是启用对象以完全序列化为 XML,然后将 XML 作为字符串从 Web 服务返回。然后我们在客户端反序列化。这将意味着相当多的属性装饰,但至少两个端点的代码会很轻,即仅使用 .NET XML 序列化程序。

您对此有何看法?

0 投票
5 回答
4677 浏览

c# - 强制类/方法的属性修饰

继我最近关于大型复杂对象作为 Web 服务结果的问题之后。我一直在考虑如何确保所有未来的子类都可序列化为 XML。

现在,显然我可以实现IXmlSerializable接口,然后将读取器/写入器扔给它,但我想避免这种情况,因为这意味着我需要在任何时候实例化读取器/写入器,并且 99.99% 的时间我将使用一个字符串,所以我可以自己写。

但是,要序列化为 XML,我只是用Xml 装饰类及其成员???属性(XmlRootXmlElement等),然后将其传递给XmlSerializerStringWriter以获取字符串。这一切都很好。我打算将返回字符串的方法放入通用实用程序方法中,所以我不需要担心类型等。

这与我有关的是:如果我不使用所需属性装饰类,则直到运行时才会引发错误。

有没有办法强制属性装饰?这可以用 FxCop 完成吗?(我还没用过 FxCop)

更新:

很抱歉耽搁了这些家伙,还有很多事情要做!

绝对喜欢在测试用例中使用反射而不是诉诸 FxCop(喜欢将所有东西放在一起)的想法。Fredrik Kalseth 的回答非常棒,感谢您包含代码,因为它可能会让我有点挖掘弄清楚如何自己做!

+1 给其他人提供类似的建议:)

0 投票
7 回答
56645 浏览

c# - XML 序列化和继承类型

继上一个问题之后,我一直致力于让我的对象模型序列化为 XML。但是我现在遇到了一个问题(平息惊喜!)。

我遇到的问题是我有一个集合,它是抽象基类类型,由具体派生类型填充。

我认为只需将 XML 属性添加到所有涉及的类就可以了,一切都会很好。可悲的是,事实并非如此!

所以我在谷歌上做了一些挖掘,现在我明白为什么它不起作用了。事实上,XmlSerializer正在做一些巧妙的反射,以便将对象序列化到 XML 或从 XML 序列化,并且由于它基于抽象类型,它无法弄清楚它到底在与什么对话。美好的。

我确实在 CodeProject 上遇到过这个页面,看起来它可能很有帮助(尚未完全阅读/使用),但我想我也想把这个问题带到 StackOverflow 表中,看看你是否有任何整洁的黑客/技巧,以便以最快/最轻的方式启动和运行。

我还应该补充的一件事是我不想走XmlInclude条路。与它的耦合太多了,而且系统的这个领域正在大力开发,所以这将是一个真正的维护头痛!

0 投票
4 回答
101225 浏览

java - 如何在 Java 中将二进制数据转换为字符串并返回?

我在一个文件中有二进制数据,我可以将其读入字节数组并毫无问题地处理。现在我需要通过网络连接将部分数据作为 XML 文档中的元素发送。我的问题是,当我将数据从字节数组转换为字符串并转换回字节数组时,数据已损坏。我已经在一台机器上对此进行了测试,以将问题与字符串转换隔离开来,所以我现在知道它没有被 XML 解析器或网络传输损坏。

我现在拥有的是

有谁知道如何将二进制转换为字符串并返回而不会丢失数据?

回答:谢谢山姆。我觉得自己像个白痴。我昨天回答了这个问题,因为我的 SAX 解析器在抱怨。出于某种原因,当我遇到这个看似独立的问题时,我并没有想到这是同一问题的新症状。

编辑:为了完整起见,我使用了Apache Commons Codec包中的Base64类来解决这个问题。

0 投票
7 回答
8345 浏览

ruby - 如何在 Ruby 中编组 lambda (Proc)?

Joe Van Dyk询问了 Ruby 邮件列表

你好,

在 Ruby 中,我猜你不能编组一个 lambda/proc 对象,对吧?这可能在 lisp 或其他语言中吗?

我想做的是:

所以,我正在向 BackgroundJob 发送一个 lambda 对象,其中包含要做什么的上下文/代码。但是,估计那是不可能的。我最终编组了一个普通的 ruby​​ 对象,其中包含程序运行后要做什么的说明。

0 投票
2 回答
2845 浏览

wcf - WCF - 域对象和 IExtensibleDataObject

典型场景。我们使用老式的 XML Web 服务在服务器场与多个分布式本地客户端internally之间进行通信。不涉及第三方,只有我们自己和我们的客户使用的应用程序。

我们目前正在考虑从模型XML WS转向WCF/object-based模型,并一直在尝试各种方法。其中之一涉及直接通过网络传输域对象/聚合,可能会在它们上调用 DataContract 属性。

通过在 上使用IExtensibleDataObjectDataContract使用 Order 属性DataMembers,我们应该能够处理简单的属性版本控制问题(请记住,我们控制所有客户端并且可以轻松地强制更新它们)。

我一直听说我们应该通过网络使用专用的、仅传输的数据传输对象 ( DTOs)。

为什么?还有理由这样做吗?我们在服务器端和客户端使用相同的域模型,当然,只有在认为正确和“必要”时才预填充集合等。集合属性利用服务定位器原理和 IoC 来调用NHibernate-based“服务”以直接(在服务器端)获取数据,并在客户端调用WCF“服务”客户端与WCF服务器场对话。

那么 - 为什么我们需要使用DTOs?

0 投票
6 回答
4792 浏览

java - Deserialize in a different language

The log4j network adapter sends events as a serialised java object. I would like to be able to capture this object and deserialise it in a different language (python). Is this possible?

NOTE The network capturing is easy; its just a TCP socket and reading in a stream. The difficulty is the deserialising part