Tag: datacontractjsonserializer

DataContractJsonSerializer可以处理循环引用吗?

是否有DataContractSerializer 可以处理的序列化/反序列化方案,而DataContractJsonSerializer 不能 ? 特别是,我正在考虑循环引用: 这个MSDN页面解释了DataContractSerializer通过在DataContractAttribute构造函数中使用IsReference = true来管理循环引用。 另一方面, DataContractAttribute.IsReference文档没有明确声明其适用性仅限于DataContractSerializer 。 DataContractJsonSerializer也会尊重IsReference属性?

正确的方法来处理JSON字符串中的&符号发送到REST Web服务

好, 我正在使用System.Runtime.Serialization和DataContractJsonSerialization 。 问题是在请求中我发送了一个带有&字符的属性值。 说, AT&T ,我收到错误的回复: Invalid JSON Data 。 我认为转义将在库内完成,但现在我看到序列化没有触及&符号&字符。 是的,对于JSON格式,这是有效的。 但是这对我的POST请求来说是一个问题,因为我需要将它发送到一个服务器,如果包含一个&符号会响应错误,因此我在这里。 HttpUtility.HtmlEncode位于System.Web库中,因此可以使用Uri.EscapeUriString 。 我这样做是为了尝试,但无论如何,没有它,所有请求都正常工作,除了一个&符号值。 编辑: HttpUtility类移植到Windows Phone SDK,但编码字符串的首选方法仍然是Uri.EscapeUriString 。 首先想到的是弄脏并开始更换会导致服务器出现问题的特殊字符,但是,我想知道,我应该做的另一个解决方案是,它是否有效且“正确”? 我应该告诉我使用 // Convert the string into a byte array. byte[] postBytes = Encoding.UTF8.GetBytes(data); 将JSON转换为byte[]并写入Stream 。 和, request.ContentType = “application/x-www-form-urlencoded”; 作为WebRequest.ContentType 。 那么,我是不是因为某种原因而搞砸了? 谢谢。

如何使用DataContractJsonSerializer序列化/反序列化存储在对象字段中的DateTime?

我使用以下类通过两个ASP.NET服务交换JSON数据: [DataContract] public class Filter { [DataMember] public string Name {get; set;} [DataMember] public FilterOperator Operator {get; set;} [DataMember] public object Value {get; set;} } 这是问题:如果我在Value设置DateTime ,它将被反序列化为字符串: Value = “/Date(1476174483233+0200)/” 这可能是因为反序列化器无法知道最初序列化时值的类型: JSON = {“Value”:”\/Date(1476174483233+0200)\/”} __type解释的, DataContractJsonSerializer在__type属性的帮助下支持多态性。 我试图在类的顶部添加[KnownType(typeof(DateTime))]属性,但它没有帮助。 但是,如果我在Value属性(以及类中相应的KnownType属性)中设置了一个Tuple ,它就可以工作(正确反序列化的值): Value = {(10/11/2016 10:49:30 AM)} 在JSON内部, __type被__type JSON = { “Value”: { “__type” : “TupleOfdateTime:#System”, “m_Item1” […]

parse.com:SerializationException使用“__type”属性反序列化JSON对象

我正在开发一个Windows 10 UWP应用程序,似乎无法摆脱这个错误:“mscorlib.ni.dll中发生类型’System.Runtime.Serialization.SerializationException’的例外,但未在用户代码中处理” 我正在使用Rest API从Parse上的数据存储中检索值并实例化对象。 这是我class级的样子 public class ImageTest { public class Image { public string __type { get; set; } public string name { get; set; } public string url { get; set; } } public class Result { public string createdAt { get; set; } public Image image { get; set; } public […]

DataContractJsonSerializer跳过具有空值的节点

我正在使用DataContractJsonSerializer将我的自定义对象序列化为JSON。 但我想跳过值为null的数据成员。 如果DataMember为null ,则该节点不应包含JSON字符串。 我怎样才能做到这一点? 给我一个简单的code snippet来使用。

在没有第三方框架的情况下从HttpWebResponse反序列化JSON的方法

我试图避免依赖开源或第三方库(如Json.NET)来解析来自HttpWebResponse的传入JSON。 为什么? 因为更多地依赖开源框架来帮助实现,你的应用程序必须依赖这些依赖关系…我不喜欢我的应用程序依赖很多库,如果可能的话。 我可以使用像Enterprise Library这样的东西,因为它支持MS,但我正在使用更多的开源库。 无论如何,我试图找出解析.NET 3.5中传入的JSON服务器端的最佳方法。 我知道这会得到很多响应,我甚至使用.NET 3.5 JavaScriptSerializer将数据序列化为JSON,但现在我正试图找出最好和最简单的方法来做反向,不用了使用第三方/开源框架来帮助解决这个问题。

DataContractJsonSerializer – 在List 中反序列化DateTime

我无法使用System.Runtime.Serialization.Json.DataContractJsonSerializer类来反序列化List包含的DateTime实例。 我似乎无法将DateTime反序列化为原始类型。 DataContractJsonSerializer始终将其反序列化为格式为”/Date(1329159196126-0500)/”的字符串类型。 如果我通过使用强类型List运行它,它将序列化和反序列化,但是我正在寻找方法让串行器在简单列表或object数组中遇到时识别并正确反序列化DateTimes。 请注意,DateTimes是此列表将包含的基元和字符串之外的唯一类型。 这是我用来测试它的代码片段。 var list = new List { 27, “foo bar”, 12.34m, true, DateTime.Now }; var serializer = new DataContractJsonSerializer(typeof (List)); using (MemoryStream ms = new MemoryStream()) { serializer.WriteObject(ms, list); ms.Position = 0; var deserializedList = serializer.ReadObject(ms) as List; }