草庐IT

$序列化

全部标签

c# - 在反序列化期间使用 XML 修饰指定默认值

我在反序列化某些XML时遇到问题;第三方提供的XML非常冗长,因此如果没有为特定元素设置值,它将提供空元素(例如)。这对某些元素来说是个问题,例如,那些用于存储整数的元素。我可以控制第三方,所以我可以让他们指定一个默认值(0),或者我可以让他们完全省略这些元素。这两个都应该避免这个问题。但是,将来可能会出现我们没有那么多控制权的情况-在这种情况下,是否有一种方法可以通过装饰来指定默认值?[XmlElement("myinteger")=0???]publicintMyInteger{get{returnmyInteger;}set{myInteger=value;}}

c# - XML字符串反序列化为c#对象

我收到这样的xml文件。OpusKlasikaLROPUSmuzika.OPUSmuzika.muzikoslaidos2013.02.03VėlyvipusryčiaisuOPUS.VėlyvipusryčiaisuOPUS.muzikoslaidos2013.02.03有许多节目和channel实例。我尝试将它反序列化为这个c#对象,但我得到的是null而不是对象:[XmlRoot("radio")]publicsealedclassradio{[XmlRoot("channel")]publicsealedclasschannel{[XmlAttribute("id")]publ

c# - .NET/C# - 将列表转换为排序列表

将List转换为SortedList的最佳方法是什么?没有循环通过它的任何好方法吗?使用OrderBy()有什么聪明的方法吗?总结请阅读所有答案和评论。 最佳答案 你的意思是:你有一个List并希望它就地分类?你有一个List并希望创建另一个本身已排序的“列表”你有一个List并希望制作一个SortedList其中键与值相同假设输入:varx=newList(){3,2,1};1是微不足道的x.Sort();2是微不足道的//sxisanIOrderedEnumerable,youcancallToList()onitifyouwa

c# - 我可以在 C# 中将 json 反序列化为匿名类型吗?

我从数据库中读取了一个很长的json。我只想要该json的一个属性。我有两个选择:一种。为该json创建一个接口(interface)并反序列化到该接口(interface)。(这是不是太过分了,因为我只需要一个属性?)b.找到我需要的子字符串(正则表达式?)首选哪个?更新:我正在使用.net3.5 最佳答案 你为什么不反序列化使用JSON.NET的“LINQtoJSON”方法(JObject等)并仅通过名称询问您需要的值?这是足够动态的,因此您不需要为一切创建接口(interface),但它比使用正则表达式要安全得多。JObjec

c# - XML序列化、编码

usingSystem;publicclassclsPerson{publicstringFirstName;publicstringMI;publicstringLastName;}classclass1{staticvoidMain(string[]args){clsPersonp=newclsPerson();p.FirstName="Jeff";p.MI="A";p.LastName="Price";System.Xml.Serialization.XmlSerializerx=newSystem.Xml.Serialization.XmlSerializer(p.GetTyp

c# - Newtonsoft.Json 导致序列化发生两次导致 Reference.cs 中的重复定义

我有一个具有服务引用的项目Common。添加对Newtonsoft.json(Version6.0.2的引用后到具有服务引用和可序列化类ChatLine的同一项目(Common)[Serializable]publicclassChatLine{[JsonProperty("L")]publicstringLineId{get;set;}[JsonProperty("CT")]publicDateTimeConversationTimeInUtc{get;set;}[JsonProperty("S")]publicstringSenderId{get;set;}[JsonPropert

c# - 如何将参数传递给反序列化json的构造函数

我在使用Newtonsoft.Json反序列化对象时将一些父实例传递给构造函数时遇到了一个小问题。假设我有以下类(class)publicclassA{publicstringStr1{get;set;}publicIListBs{get;set;}}publicclassB{publicB(Aa){//ashouldnotbenull!Console.WriteLine(a.Str)}}现在我像这样对对象a进行序列化和反序列化:Aa=newA()a.Bs=newList()a.Bs.Add(newB(a));a.Bs.Add(newB(a));a.Bs.Add(newB(a));va

c# - 我可以在不实现 IXmlSerializable 的情况下为 XmlSerializer 提供自定义序列化吗?

我们正在使用XmlSerializer,我想为某些类提供自定义序列化。但是,我并不总是能够修改相关类的源代码,否则我只能让它实现IXmlSerializable。有什么办法吗? 最佳答案 这是代理反序列化助手的一个简单示例:给定一个我们无法在类级别直接控制序列化的类型:publicsealedclassClass//contrivedexample{publicstringProperty{get;set;}}我们需要反序列化的xml:Value您可以创建一个代理类型来手动处理目标类型的反序列化过程,如下所示:[XmlRoot("C

c# - 序列化和 Yield 语句

是否可以序列化包含yield语句的方法(或包含此类方法的类),以便在重新水化该类时,保留生成的迭代器的内部状态? 最佳答案 是的,你可以做到这一点。注意事项。可以在此处找到使用yield序列化方法、反序列化和继续的示例:http://www.agilekiwi.com/dotnet/CountingDemo.cs(WebArchiveLink)。一般来说,尝试序列化而不做一些额外的工作会失败。这是因为编译器生成的类没有用Serializable属性标记。但是,您可以解决这个问题。我会注意到它们没有标记为可序列化的原因是因为它们是一个

c# - C# 中内存占用最少的最快的序列化器和反序列化器?

我目前正在使用二进制格式化程序(Remoting)序列化和反序列化对象以便在我的LAN中发送。我最近从2.0升级到.NET3.5。3.5是否引入了任何新类型来提高序列化性能?我查看了DataContractSerializer,但它会将任何内容序列化为底层XML权利……这肯定会增加内存占用量。通过LAN发送对象最快的序列化程序是什么?我不关心互操作或版本控制......我需要速度!我对第三方开源替代方案持开放态度。 最佳答案 听起来像ProtocolBuffers可能正是您要找的。我知道三种.NET实现:protobuf-net,p