Tag: 序列化

如何控制.NET DataContract序列化,以便使用XML属性而不是元素?

如果我有一个标记为DataContract的类和一些标记有DataMember属性的属性,我可以很容易地将它序列化为XML,但它会创build如下输出: <Person> <Name>John Smith</Name> <Email>john.smith@acme.com</Email> <Phone>123-123-1234</Phone> </Person> 我更喜欢的是属性,比如… <Person Name="John Smith" Email="john.smith@acme.com" Phone="123-123-1234" /> DataMember属性允许我控制名称和顺序,但不能将其序列化为元素还是属性。 我环顾四周,发现DataContractFormat和IXmlSerializable但我希望有一个更简单的解决scheme。 什么是最简单的方法来做到这一点?

你可以指定一个date时间的XmlSerialization的格式?

我需要序列化/反序列化为XML文件的yyyyMMdd格式的date时间。 有一个属性/解决方法,我可以使用这个?

Java序列化 – java.io.InvalidClassException本地类不兼容

我有一个公共类,实现Serializable,由其他多个类扩展。 只有那些以前的序列化的子类 – 从来没有超级类。 超类定义了一个serialVersionUID。 我不知道它是否重要,但它不是标记为私人的,而是它只是默认的保护 – 你可能会说它是包保护 static final long serialVersionUID = -7588980448693010399L; 超类,也没有任何子类,但实现了readObject或writeObject,并且没有一个子类具有明确定义的serialVersionUID。 我想在超类中定义的就足够了。 尽pipe如此,直到一个新的实例variablesList / ArrayList和一个新的方法被添加到超类中,并且一些私有的实例variables被添加到了它的一个子类中。 现在当试图回读以前的序列化对象时,抛出了一个exception。 一个类似于这样的: com.SomeCompany.SomeSubClass; local class incompatible: stream classdesc serialVersionUID = 1597316331807173261, local class serialVersionUID = -3344057582987646196 我假设这是因为默认的serialVersionUID,因为我没有在任何一个子类中声明,因为超类和一个子类的变化,现在已经改变了。 如何摆脱这种困境的build议将不胜感激。 我假设我需要实现readObject和writeObject,但除了调用defaultReadObject()和defaultWriteObject(),我不完全确定我需要做什么。 我也不知道是否需要将serialVerisonUID添加到所有子类,或者如果readObject和writeObject需要由每个子类实现,或者如果我可以只在一个超类中实现它们一次。

如何在C#中序列化一个exception对象?

我想在C#中序列化一个exception对象。 但是,由于Exception类没有标记为[Serializable] ,所以这是不可能的。 有没有办法解决这个问题? 如果在应用程序执行过程中出现问题,我想通知发生的exception。 我的第一个反应是序列化它。

通过自定义属性(json.net)从序列化中排除属性

我需要能够控制一个类的某些属性是如何被序列化的。 最简单的情况是[ScriptIgnore] 。 但是,我只希望这些属性能够被我所处理的这个特定的序列化情况所尊重 – 如果应用程序中的其他下游模块也想要序列化这些对象,则这些属性都不应该妨碍。 所以我的想法是在属性上使用自定义属性MyAttribute ,并使用一个知道查找该属性的钩子初始化JsonSerializer的特定实例。 乍一看,我没有看到JSON.NET中的任何可用钩子点将为当前属性提供PropertyInfo来执行此类检查 – 只有属性的值。 我错过了什么吗? 或者更好的方法来解决这个问题?

未能在Web API中序列化响应

我正在研究ASP.NET MVC的Web API,我有这个错误: “ObjectContent`1”types未能序列化内容types为“application / xml; 字符集= UTF-8' 。 我的控制器是: public Employee GetEmployees() { Employee employees = db.Employees.First(); return employees; } 为什么我得到这个错误?

Java序列化与不可序列化的部分

我有: class MyClass extends MyClass2 implements Serializable { //… } 在MyClass2中是一个不可序列化的属性。 我如何序列化(和反序列化)这个对象? 更正:MyClass2当然不是一个接口,而是一个类。

了解护照序列化反序列化

你如何向外行解释Passport序列化和反序列化方法的工作stream程? 在passport.serializeUser被调用后, user.id去哪里? 我们正在调用passport.deserializeUser之后它在哪里适合工作stream? // used to serialize the user for the session passport.serializeUser(function(user, done) { done(null, user.id); // where is this user.id going? Are we supposed to access this anywhere? }); // used to deserialize the user passport.deserializeUser(function(id, done) { User.findById(id, function(err, user) { done(err, user); }); }); 我仍然试图把我的头围绕着它。 我有一个完整的工作应用程序,并没有遇到任何forms的错误。 我只是想了解这里究竟发生了什么? 任何帮助表示赞赏。

序列化一个包含std :: string的类

我不是一个C ++专家,但是我已经在过去几次序列化了一些东西。 不幸的是,这次我试图序列化一个包含一个std :: string的类,我理解它非常像序列化一个指针。 我可以把这个类写出来,然后再读回来。 所有的int字段都可以,但std :: string字段给出了一个“address out of bounds”的错误,大概是因为它指向的数据已经不存在了。 有没有一个标准的解决方法呢? 我不想回到char数组,但至less我知道他们在这种情况下工作。 如有必要,我可以提供代码,但是我希望能够很好地解释我的问题。 我通过将类转换为char *并将其写入fstream文件来序列化。 当然,阅读正好相反。

EF 4.1 – Code First – JSON循环引用序列化错误

我得到了一个循环引用序列化错误,虽然,据我所知,我没有任何循环引用。 我从数据库中检索一组订单,并以JSON的forms将它们发送到客户端。 所有的代码如下所示。 这是错误的: 错误 序列化“System.Data.Entity.DynamicProxies.Order_83CECF2AA4DE38232F9077D4B26941AB96BC61230419EA8AC42C9100E6072812”types的对象时检测到循环引用。 说明:执行当前Web请求期间发生未处理的exception。 请查看堆栈跟踪,了解有关错误的更多信息以及源代码的来源。 exception详细信息:System.InvalidOperationException:在序列化“System.Data.Entity.DynamicProxies.Order_83CECF2AA4DE38232F9077D4B26941AB96BC61230419EA8AC42C9100E6072812”types的对象时检测到循环引用。 源错误: 在执行当前Web请求期间生成未处理的exception。 有关exception的来源和位置的信息可以使用下面的exception堆栈跟踪来标识。 我的课程如下: 订购 public class Order { [Key] public int OrderId { get; set; } public int PatientId { get; set; } public virtual Patient Patient { get; set; } public int CertificationPeriodId { get; set; } public virtual CertificationPeriod CertificationPeriod { get; set; […]