草庐IT

SERIALIZATION

全部标签

c# - 分配多个 JsonProperties?

我正在尝试创建一个包含来自Facebook和Twitter的信息的数据类。但是在我来自Twitter的JSON回复中我需要id_str并且从FaceBook我得到id。我需要将这两个放入id字符串中。现在我知道如果我想将Twitter的id_str反序列化到我的id字符串中,我可以使用[JsonProperty("id_str")].但是,如果我需要将Facebook的id和Twitter的id_str反序列化到我的数据类中的同一个id字符串中怎么办? 最佳答案 我想我以最简单的方式解决了它......publicstringid_

c# - 您如何知道何时通过 XML 序列化加载?

我正在尝试通过XML序列化加载对象树,此时它将加载对象,并非常愉快地创建树。我的问题围绕着这些类支持一定程度的审计这一事实。我希望能够在每个对象完成加载后调用一些方法。为了论证,假设我有一个相当通用的对象树,在不同级别有不同的类,例如:123AnyStreet456HighStreet有没有什么方法可以使用默认的序列化程序(类似于您可以创建类似ShouldSerializeFoo的方法)来确定每个对象的加载何时完成?编辑:我应该指出,暴露类似于OnLoaded()方法的明显情况,我可以在反序列化后调用,这让我觉得是一件“坏事”.编辑2:为了便于讨论,这是我当前的hack“方法”,适用于

c# - 使用 JSON.NET 序列化对象的动态属性名称

我使用JSON.NET序列化我的对象以连接到RESTAPI。我的对象中需要序列化为JSON的属性之一具有动态属性名称。如果此属性的结构中包含的值为数值,则JSON属性为“type_id”,但如果此值为字符串值,则JSON属性名称为“type_code”。我尝试为此使用自定义JsonConverter,但是当我尝试序列化时,我得到了一个带有此消息的JsonWriterException:"TokenPropertyNameinstatePropertywouldresultinaninvalidJSONobject.Path''."下面是我的对象的一个​​子集,如下所示,我没有在我的对象

c# - 是否可以使用循环引用执行序列化?

因此,我的实体类(用C#编写)遵循父子模型,其中每个子对象都必须有一个Parent属性,在该属性中它保留对其父对象的引用。由于循环引用,此Parent属性会导致对象序列化出现问题。我无法删除对父级的引用,也无法将其标记为XmlIgnore(因为我需要在反序列化XML时读回它)对此有什么想法吗? 最佳答案 XML序列化不支持循环引用,您需要使用XmlIgnore属性从序列化中排除父属性。参见thisblogpost一种在反序列化时维持关系的方法。或者,您可以使用DataContractSerializer而不是XmlSerialize

c# - 序列化对象时如何忽略事件订阅者?

当使用BinaryFormatter序列化以下类时,订阅Roar事件的任何对象也将被序列化,因为对这些对象的引用由EventHandler委托(delegate)持有.[Serializable]publicclassLion{publiceventEventHandlerRoar;publicstringName{get;set;}publicfloatFluffiness{get;set;}publicLion(stringname,floatfluffiness){Name=name;Fluffiness=fluffiness;}publicvoidPoke(){Roar();/

c# - 如何确定类是否具有 DataContract 属性?

我正在编写一个需要确定类是否具有DataContract属性的序列化函数。如果类具有DataContract属性,基本上函数将使用DataContractSerializer,否则它将使用XmlSerializer。感谢您的帮助! 最佳答案 测试DataContractAttribute的最简单方法可能是:boolf=Attribute.IsDefined(typeof(T),typeof(DataContractAttribute));也就是说,现在DC支持POCO序列化,还不完整。更完整的DC可串行化测试是:boolf=true

c# - 无法创建组件 .. 类型未标记为可序列化

我正在使用VisualC#2008ExpressEdition创建一个WinForms用户控件。一切都进行得很顺利,直到我发现我可以玩List属性窗口中的集合属性。在尝试更改集合并运行项目后,我开始遇到错误,并尽我所能将一切恢复到正常工作时的状态。现在,当我尝试将控件实例放置到窗体上时,出现以下错误。Failedtocreatecomponent'ColorPicker'.Theerrormessagefollows:'System.Runtime.Serialization.SerializationException:Type'WindowsFormsApplication1.Co

c# - XMLSerializer 到 XElement

我一直在数据库LINQ中使用XML,发现使用序列化程序非常困难。数据库LINQ需要一个存储XElement的字段。我有一个包含许多自定义结构类的复杂对象,所以我想使用XmlSerializer来序列化该对象。但是,序列化器只能序列化到文件(“C:\xxx\xxx.xml”)或内存流。但是要将它转换或序列化为XElement以便我可以使用LINQ将其存储在数据库中吗?以及如何做相反的事情?即反序列化一个XElement... 最佳答案 尝试使用这个using(varstream=newMemoryStream()){serialize

c# - 使用XmlArray反序列化xml文件?

我正在尝试反序列化此xml结构。TestTestTestTest我试过:[Serializable][XmlRoot(ElementName="DietPlan")]publicclassTestSerialization{[XmlArray("Health")][XmlArrayItem("Fruit")]publicstring[]Fruits{get;set;}[XmlArray("Health")][XmlArrayItem("Veggie")]publicstring[]Veggie{get;set;}}但这会引发异常“XML元素已存在于当前范围内。使用XML属性为该元素指定

c# - .NET 序列化排序

我正在尝试使用XmlSerializer和继承来序列化一些对象,但我在对结果进行排序时遇到了一些问题。下面是一个类似于我设置的示例:~publicclassSerializableBase{[XmlElement(Order=1)]publicboolProperty1{get;set;}[XmlElement(Order=3)]publicboolProperty3{get;set;}}[XmlRoot("Object")]publicclassSerializableObject1:SerializableBase{}[XmlRoot("Object")]publicclassSe