问题标签 [datacontractserializer]

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 回答
3173 浏览

wcf - DataContract 序列化 - 基类属性名称不起作用

我有一个如下基类:

然后我有很多派生类,这里是一个例子:

一旦序列化,这里是输出:

为什么 ID 属性没有使用我在基类的 DataMember 属性中提供的名称进行序列化?

0 投票
1 回答
250 浏览

serialization - 如何使 DataContractSerializer 更安全?

我最近遇到了一个场景,我们的一个开发人员向我们的数据合约添加了一个未标记为数据成员的对象。我们使用 DataContractSerializer 来存储我们正在控制的硬件的配置文件。显然,序列化操作没有成功。

这发现的主要问题是配置文件在此过程中被破坏。有谁知道在尝试序列化之前确保对象图将序列化的方法?

来自序列化异常的堆栈跟踪在调用 XmlObjectSerializerContext.CheckIfTypeSerializable(..) 时失败我想知道是否有类似的东西,我可以在尝试序列化之前使用它。

我想避免必须将图形流式传输到内存然后传输到文件,但我想这会起作用......

有什么建议么?

0 投票
1 回答
2617 浏览

wcf - DataContractSerializer 读取的 XML 中的顺序是否重要?

我有以下代码:

在案例 1 中,FullName 属性未反序列化,但在案例 2 中,它已正确反序列化。为什么?

0 投票
5 回答
15826 浏览

.net - 通用 WCF JSON 反序列化

我对 WCF 有点陌生,并将尝试清楚地描述我正在尝试做的事情。

我有一个使用 JSON 请求的 WCF 网络服务。在大多数情况下,我在发送/接收 JSON 方面做得很好。例如,以下代码运行良好且符合预期。

发送的 JSON:

周转基金:

这将按预期返回一个带有“Dave”的 JSON 对象。问题是我不能总是保证我收到的 JSON 将与我的 DataContract 中的成员完全匹配。例如,JSON:

由于大小写不匹配,将无法正确序列化。guy.FirstName 将为空。这种行为是有道理的,但我真的不知道如何解决这个问题。我是否必须在客户端强制使用字段名称,还是有办法在服务器端进行协调?

一个可能相关的问题:我可以接受通用 JSON 对象并将其序列化为 StringDictionary 或某种简单的键值结构吗?所以无论在 JSON 中发送什么字段名称,我都可以访问已发送给我的名称和值吗?现在,我可以读取我收到的数据的唯一方法是它是否与预定义的 DataContract 完全匹配。

0 投票
3 回答
1316 浏览

c# - 单声道反序列化问题

任何人都知道为什么 C# 中的数据合同序列化程序生成的以下 XML 在 Windows 中可以正常工作,但在 Mono 上的 Linux 下却不行?

XML:

错误:

如果没有列出服务(xml 标签<services/>),它也会给我一个错误。services 变量的类型为List<Service>。这只是 Mono 无法处理的类型吗?其他类型会更合适吗?还是完全是别的东西?

0 投票
6 回答
8214 浏览

wcf - 通过 WCF 传递匿名类型的实例

我有一个 WCF 服务方法,它需要一个对象,然后使用反射检索其属性。

在客户端,我创建了一个匿名类型对象

并将其传递给方法。我遇到了一个例外:

我不能用序列化属性标记类型或其成员,因为实际上没有明确声明的类型或属性。有没有办法克服这个问题?

0 投票
9 回答
25277 浏览

c# - WCF 在没有“设置”的属性上阻塞。任何解决方法?

我有一些由于服务方法而传递的类,并且该类具有仅获取属性:

我在服务方面遇到了一个例外:

System.Runtime.Serialization.InvalidDataContractException:“MyNamespace.ErrorBase”类型中的属性“Message”没有设置方法。

我必须将此属性作为唯一的吸气剂,我不能允许用户为其分配值。我可以使用任何解决方法吗?或者我错过了一些额外的属性?

0 投票
3 回答
8646 浏览

wcf - WCF - 序列化继承的类型

我有这些课程:

ResponseFileInquiry 类的一个实例是我的服务方法返回给客户端的内容。现在,如果我用 ErrorBase 实例填充 ResponseFileInquiry.errors,一切正常,但如果我添加继承类型 FileMissingError 的实例,我会在序列化过程中得到服务端异常:

所以序列化程序变得困惑,因为它期望 List 包含声明的类型对象(ErrorBase),但它正在获取继承的类型(FileMissingError)对象。

我有一大堆错误类型,列表将包含它们的组合,那么我该怎么做才能让它工作呢?

0 投票
3 回答
101849 浏览

c# - XML 序列化和命名空间前缀

我正在寻找一种使用 C# 的方法,我可以将一个类序列化为 XML 并添加一个命名空间,但定义该命名空间将使用的前缀。

最终,我试图生成以下 XML:

我知道我可以添加一个命名空间,但它们似乎DataContractSerializerXmlSerializer内部生成一个前缀,这是我无法控制的。我可以使用这些序列化程序中的任何一个来控制它(我可以使用它们中的任何一个)吗?

如果我无法控制命名空间的生成,我是否需要编写自己的 XML 序列化程序,如果是这样,最好的方法是什么?

0 投票
1 回答
480 浏览

serialization - 数据合同序列化是否使用反射?

XmlSerialization 为每个类创建一个序列化程序代理。代理驻留在不同的程序集中,因此它只能序列化公共字段。

DataContract 序列化也可以序列化私有字段。这是否意味着它使用反射?是不是比使用代理慢(第一次除外)?