Tag: datacontractserializer

如何使用DataContractSerializer创建具有与我的已知类型匹配的标记名称的xml

我有以下数据合同: [CollectionDataContract(Name=”MyStuff”)] public class MyStuff : Collection {} [DataContract(Name = “Type1”)] [KnownType(typeof(Type1))] public class Type1 { [DataMember(Name = “memberId”)] public int Id { get; set; } } [DataContract(Name = “Type2”)] [KnownType(typeof(Type2))] public class Type2 { [DataMember(Name = “memberId”)] public int Id { get; set; } } 我将其序列化为xml如下: MyStuff pm = new MyStuff(); Type1 t1 = […]

DataContractSerializer中缺少数据成员的缺省值

使用DataContract中的以下两个数据成员然后使用DataContractSerializer,只有Name按预期序列化。 我的问题是我反序列化文件。 “名称”被正确读取和加载但由于“超时”不存在,我希望它保持默认的“TimeSpan.FromHours(12)”。 实际上发生了什么是DataContractSerializer分配一个值,但因为它没有值来分配它使用的时间跨度默认值为0.这个行为有什么问题吗? private string _name; [DataMember(Name = “Name”)] public string Name { get { return _name; } set { _name= value; } } private TimeSpan _timeout = TimeSpan.FromHours(12); public TimeSpan Timeout { get { return _timeout ; } set { _timeout = value; } }

DataContractSerializer不是序列化inheritanceISerializable的类的成员

我有这堂课: using System; using System.Collections.Generic; using System.Runtime.Serialization; namespace Grouping { [Serializable] public class Group : HashSet { public Group(string name) { this.name = name; } protected Group(){} protected Group(SerializationInfo info, StreamingContext context):base(info,context) { name = info.GetString(“koosnaampje”); } public override void GetObjectData(SerializationInfo info,StreamingContext context) { base.GetObjectData(info,context); info.AddValue(“koosnaampje”, Name); } private string name; public string Name { […]

具有多个命名空间的DataContractSerializer

我正在使用DataContractSerializer将对象序列化为XML。 主要对象是带有命名空间“ http://personaltrading.test.com/ ”的SecurityHolding,它包含一个名为Amount的属性,它是一个名为“ http://core.test.com ”的类。 当我将其序列化为XML时,我得到以下内容: 1.05 USD 0 3681 无论如何我可以控制d3p1前缀吗? 我做错了什么或者我应该做别的事吗?

inheritance类的输出无效

我有2节课 [DataContract, KnownType(typeof(B))] public class A { [DataMember] public string prop1 { get; set; } [DataMember] public string prop2 { get; set; } [DataMember] public string prop3 { get; set; } } [DataContract] public class B : A { [DataMember] public string prop4 { get; set; } } 以及以下方法: List BList = new List(); BList […]

在.NET 3.5中使用WCF DataContractJsonSerializer

我正在尝试使用ASP.NET MVC 2站点中的地理编码代码。 不幸的是,一些代码,特别是DataContractJsonSerializer的使用,只能通过.NET 4.0实现 。 由于我的托管服务提供商不支持.NET 4,我不得不在.NET 3.5中实现该function。 我如何重新编写代码(我在下面重新发布)在.NET 3.5中工作? Google Maps Geocoding API也可以返回XML,如果在3.5中更容易序列化… 下面是我试图从.NET 4转换为.NET 3.5的代码: using System; using System.Runtime.Serialization; using System.Runtime.Serialization.Json; using System.Net; using System.Web; . . . private static GeoResponse CallGeoWS(string address) { string url = string.Format( “http://maps.google.com/maps/api/geocode/json?address={0}&region=dk&sensor=false”, HttpUtility.UrlEncode(address) ); var request = (HttpWebRequest)HttpWebRequest.Create(url); request.Headers.Add(HttpRequestHeader.AcceptEncoding, “gzip,deflate”); request.AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate; […]

如何在WCF中使用没有属性“KnownType”的接口数据类型?

如果我正在使用包含“OperationContract”操作的“ServiceContract”。 操作返回或接收接口参数。 当我使用该服务时,我收到一条exception消息: “反序列化器不知道映射到此名称的任何类型。如果使用DataContractSerializer或将与'{%className%}’对应的类型添加到已知类型列表中,请考虑使用DataContractResolver”。 我可以将KnowTypes的属性添加到接口,但我的接口项目与实现项目分离,并且它们不能具有循环依赖性引用,因此无法声明KnowTypes。 什么是最好的解决方案?

如何使用DataContractJsonSerializer将字符串数组序列化为JSON?

这似乎与下面的问题相同,但答案尚未解决: 反序列化一个简单的JSON数组 我正在使用DataContractJsonSerializer将XML转换为JSON,反之亦然。 一切都适用于复杂的数据类型和复杂数据类型的数组,但我遇到了为字符串数组生成JSON的问题。 我需要生成的JSON应该具有以下结构: { “data”: { “x_axis”: { “labels”: [ “Jan”, “Feb”, “Mar”, “Apr”,”May”, “Jun”, “Jul”, Aug”,”Sep”, Oct”, “Nov”, “Dec” ] } } } 我使用的对象是: – LineChartData: [DataContract] public class LineChartData { [DataMember(Name = “x_axis”)] public LineChartXAxis XAxis { get; set; } } LineChartXAxis: [DataContract] public class LineChartXAxis { [DataMember(Name = “labels”)] public […]

C#DataContractSerializer序列化exception,在对象字段中设置了枚举

鉴于以下代码, [DataContract] public class TestClass { [DataMember] public object _TestVariable; public TestClass(object value) { _TestVariable = value; } public void Save() { using (XmlDictionaryWriter writer = XmlDictionaryWriter.CreateTextWriter(new FileStream(“test.tmp”, FileMode.Create))) { DataContractSerializer ser = new DataContractSerializer(typeof(TestClass)); ser.WriteObject(writer, this); } } } public enum MyEnum { One, Two, Three } 当_TestVariable设置为Enum值时,为什么无法序列化? new TestClass(1).Save(); // Works new TestClass(“asdfqwer”).Save(); […]

DataContractJsonSerializer可以处理循环引用吗?

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