问题标签 [datacontractjsonserializer]

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 投票
1 回答
881 浏览

c# - 我如何知道一个类型是否可以使用 Json.NET 进行转换?

我正在尝试为一个集合编写一个接口,该集合在内部将数据存储为JObject

Add<T>如果自定义类型没有DataContract注释,我想在该方法中提供一个有用的异常。例如,如果有人打电话:

"Cannot serialize type 'CustomType'. DataContract annotations not found."如果CustomType没有正确的注释,它将抛出异常。

到目前为止,我已经找到了一种方法来获取类型定义中的每个泛型参数,以便我可以检查它们:

并尝试像这样实现 add 方法:

我认为这将适用于原始类型和自定义类型,但不适用于非通用 .NET 类型,因为它们并不都有DataContract注释。有没有办法知道哪些类型可以被序列化JsonConvert

0 投票
2 回答
806 浏览

c# - 特殊字符,XmlException 和 DataContractJsonSerializer

每当被反序列化的 JSON 包含像“@”这样的字符时,我都会从输出中看到 XmlException。最后,它仍然成功地反序列化它,但它让我不知道出了什么问题。它还会减慢调试速度,因为许多 json 响应都包含这些字符。

重现代码:

System.Xml.ni.dll 中发生了“System.Xml.XmlException”类型的异常,并且在托管/本机边界之前未处理

我错过了什么吗?如果可能的话,我不想在反序列化之前进行任何搜索和替换。

编辑

如果我在 .NET 4.5 控制台应用程序中运行相同的代码,我不会看到此异常发生。

0 投票
1 回答
168 浏览

json - WCF,将 Json 序列化为 XML

使用 DataContractJsonSerializer,我能够得到 Json 字符串。
现在,我想将此 Json(名为“流”)转换为 XML。有什么办法不使用“[WebInvoke(ResponseFormat = WebMessageFormat.Xml, BodyStyle = WebMessageBodyStyle.Wrapped)]”?

服务

客户端

我目前拥有的服务器端(但没有运气)

0 投票
1 回答
1659 浏览

c# - DataContractJsonSerializer 可以处理循环引用吗?

是否有任何DataContractSerializer 可以处理而DataContractJsonSerializer 不能处理的序列化/反序列化场景?

特别是,我正在考虑循环引用:这个 MSDN 页面解释了如何DataContractSerializer通过IsReference = trueDataContractAttribute构造函数中使用来管理循环引用。另一方面,DataContractAttribute.IsReference文档没有明确声明其适用性仅限于DataContractSerializer.

还会DataContractJsonSerializer尊重IsReference财产吗?

0 投票
1 回答
369 浏览

c# - C# DataMember 序列化器排序与预期相反

根据这篇文章,当序列化为 JSON 时,我希望在字段列表的顶部看到我的基类中的字段。但是,我看到列表底部的字段。排序在实际类本身中是正确的,但在层次结构中不正确。

正在发生的事情是它与班级正确排序,它正在做与我期望的完全相反的事情。我希望基类首先对其字段进行序列化。我不想使用 Order=X 属性,因为我的对象中有太多字段。

这是与此处描述的完全相反的行为:

http://msdn.microsoft.com/en-us/library/ms729813(v=vs.110).aspx

序列化 MySecondChild 的实例时...

预期的

实际的

0 投票
0 回答
1100 浏览

c# - DataContractJsonSerializer - 反序列化为字典

我想将作为 REST 查询(无法更改 json 字符串)结果获得的 json 反序列化为字典类型。json 字符串看起来像这样:

我为“有用”创建布尔属性,为“计数”等创建整数,但我对“属性”有疑问。如您所见,在每个部分(和每个结果)中,我得到不同的“属性”。我需要将它们反序列化为一些通用集合,如字典或 KeyValuePair 列表。问题是,如 msdn 中所述(此处 - http://msdn.microsoft.com/en-us/library/bb412170.aspx“字典不是直接使用 JSON 的方法”

如果是这样,我该怎么做?我的应用程序是 silverlight 5、.Net 4、VS 2010。

提前致谢!

0 投票
1 回答
1744 浏览

c# - JavaScriptSerializer 序列化器不处理空值

在我的 WPF MVVM 应用程序中,我从一个安静的 WCF 服务以 JSON 格式获取数据。我正在使用 JavaScriptSerializer 反序列化这些数据。但这无法处理空值(如果有)。在这种情况下,我必须发送一些值而不是我不想发送的 DBnull 值。

WCF 服务:

其中 dcReportEmployee 是数据合同

在 WPF 应用程序中:

在这里,如果 objResponseString 包含任何空值,那么它会失败。我本可以发送一些空值替换,但我不希望这样。

对此有什么想法吗?

0 投票
2 回答
1522 浏览

.net - 如何序列化不同类型且没有名称的 JSON 参数列表

我需要向包含以下 JSON 的服务器发布请求。我想在代表请求的类上使用 DataContractJsonSerializer 和 DataContract、DataMember 属性,例如

这代表一个 RPC 调用

在某些 API 中。API 中有许多具有不同参数列表的调用。

如果参数列表包含 T 类型的对象,我可以在其中使用 generic List<T>,这很简单,但 API 需要不同类型的参数列表(包括非原始对象)。

那么如何为参数数组构造 DataContract 呢?

0 投票
1 回答
238 浏览

c# - 类型不可序列化,因为它不是公共 datacontractserializer

我是 wcf 和 windows phone 8 应用程序的新手并调用 wcf 服务(其他开发人员)并尝试反序列化数据它有时工作正常但大多数时候它给了我错误

“数据合约类型 'TEST.Model.Response`1[[TEST.Model.Announcement, TEST, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]' 无法反序列化,因为成员 'ResponseData' 不是公开。将成员设为公开将修复此错误。或者,您可以将其设为内部,并在程序集上使用 InternalsVisibleToAttribute 属性以启用内部成员的序列化 - 有关更多详细信息,请参阅文档。请注意,这样做具有一定的安全性影响。”

我的模型类是

当我尝试调用时

0 投票
0 回答
543 浏览

c# - 如何使用 DataContractJsonSerializer 解析对象列表?

如何使用 DataContractJsonSerializer 序列化对象列表?

当我尝试解析以下 json 字符串时,我得到了 InvalidCastException

"[{\"name\":\"Adam\",\"age\":\"null\"},{\"name\":\"James\",\"age\":\"null \"}]"

我一直在使用以下助手类。