Tag: 序列化

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 { […]

如何序列化\反序列化属性名称依赖于数据的属性

我试图得到以下json(见下文)反序列化(使用newtonsoft json序列化器),问题是名为“2010-12”的变量,它显然依赖于返回的数据 – 它代表一个月和下个月的值将改为“2010-01”。 关于我如何处理以下课程的任何想法? [JsonObject(MemberSerialization.OptIn)] public class Crimes { [JsonProperty()] public Month Month { get; set; } } 示例JSON实例: { “commentary”: null, “crimes”: { “2010-12”: { “anti-social-behaviour”: { “crime_rate”: “0.46”, “crime_level”: “average”, “total_crimes”: 74 }, “other-crime”: { “crime_rate”: “0.35”, “crime_level”: “average”, “total_crimes”: 56 }, “all-crime”: { “crime_rate”: “1.12”, “crime_level”: “average”, “total_crimes”: 180 }, “robbery”: […]

WCF。 IList被反序列化为数组。 如何使它成为任何可写列表(ArrayList)?

我有一个客户端 – 服务器应用程序,其中一部分通过WCF(netTcp绑定)相互“交谈”。 我有我的DataContract,它有一个第三方类的字段: [Serializable] public class MyResult{ public ThirdPartyResult Result {get;set;} /* other fields */ } 使用reflection我看到这个: [Serializable] public class ThirdPartyResult { private IList result; public IList Result { get { return result ?? (result = new ArrayList());} } } 从客户端调用服务器时,我将result作为服务器上的ArrayList 。 在客户端之后, result字段变为固定大小的数组。 我没有使用添加服务引用 ,但我使用程序集共享,只是这样做 ChannelFactory.CreateChannel(new NetTcpBinding(“Configuration.Name”), address); 更新:服务合同 [ServiceContract] [ServiceKnownType(typeof(ArrayList))] [ServiceKnownType(typeof(ThirdPartyResult))] public […]

循环引用和ScriptIgnore问题

我有几个相互引用的BusinessObject类,我需要在JsonResponse中序列化一个并将其返回到我的视图中。 我一直得到循环引用exception,我无法摆脱它。 我已将[ScriptIgnore()]装饰器放在每个不是简单数据类型属性的属性上,但我仍然得到exception。 我无法弄清楚问题出在哪里,因为我阻止了序列化器几乎所有的东西,它仍然在炸毁我。 有没有办法看到它们当前状态的序列化对象是什么? [HttpPost] public JsonResult GetAnalysisInfo(int id) { ProjectContext myDB = db; SearchAnalysis searchanalysis = SearchAnalysis.Find(myDB, id); //searchanalysis.Results = searchanalysis.SearchResultsPrototype(myDB); return this.Json(searchanalysis); } 更新 我也试过实现ISerializable无济于事。 我的GetObjectData非常简单: public void GetObjectData(SerializationInfo info, StreamingContext context) { info.AddValue(“SearchAnalysisId”, this.SearchAnalysisId); info.AddValue(“Created”, this.Created); } 仍然收到CircularRefernce错误。 DateTime数据类型不会导致序列化问题吗?

XML反序列化和XPath?

我有这样的Xml …Snip…. MR John Wayne …..Snip… 其中Citizen Name是Party Node中的复杂类型。 (这是从我正在创建适配器的第三方集成中收到的xml) 我并不感兴趣,因为我的课程中有一个子类型,我试图反序列化,我宁愿拥有。 public class Party { public string FirstName { get; set; } public string LastName {get;set;} } 因此,不是将我的类定义作为XML表示的具体定义,而是可以使用类似XPath的东西来修饰属性,例如。 [XmlElement(“\CitizenName\CitizenNameForeName”)] public string FirstName {get;set;} 要从xml中挑选信息到一个类中,它包含我感兴趣的数据? 从第三方收到的xml非常冗长,我只对特定方面感兴趣。 一种选择是创建一个XMLDocument并使用XPath和转换方法手动映射到我的类,但我想如果有中间解决方案我会问?

使用JSON.NET部分反序列化,保留一些原始字段

我有这样的文件 { “Field1”: 1, “Field2”: 2, “Field3”: { Type: “TheMotherLoad” } } 我想转换成这个类,但保持字段3“原始/原样”。 public class Fields { public int Field1 { get; set; } public int Field2 { get; set; } public string Field3 { get; set; } } 结果应该是 Field1 = 1, Field2 = 2, Field3 = “{ Type: “TheMotherLoad” }” 可以用Json.NET吗?

将对象保存到没有序列化属性的文件的最简单方法是什么?

我在c#中有不同类型的对象,我想保存到文件(XML是首选)但我不能使用序列化,因为该类不是由我编写的,而是来自DLL。 什么是最好的解决方案?

在C#中序列化对象并获取字节流

我有一个对象,一个Serializable类的实例。 我想知道如何将这个对象作为字节流? 我知道我可以使用BinaryFormatter然后使用Serialize方法,但是这个方法需要一个serializationStream来编写序列化对象。 我希望能够在特定位置的文件/流中编写它,所以我想做类似的事情: obj = new Something(); // obj is serializable byte[] serialized = obj.serialize(); [*] file.write(position, serialized) 有什么方法可以做[*] ,取一个对象序列化的字节?

如何使用许多子节点反序列化XML

如果我的XML是这样的: Jerry Joe Sam 我可以将它序列化为这个类: [DataContract(Namespace = “”, Name = “dict”)] public class Item { [DataMember(Name = “Name”)] public string Name { get; set; } [DataMember(Name = “Array”)] public IEnumerable Children { get; set; } } 但是,如果我的XML是这样的呢? Jerry Joe Sam 这不起作用: [DataContract(Namespace = “”, Name = “Item”)] public class Item { [DataMember(Name = “Name”)] public […]

将属性反序列化为预先存在的对象

是否可以使用任何标准序列化程序反序列化对象属性,而无需创建新对象? 问题是,有问题的对象非常复杂(它们只能由特殊工厂创建,它们的类型是在运行时动态生成的),但是它们有一些已知的属性,我想将它们存储在外部文件中(最好是xml) ,但二进制也没问题),以后(可能在应用程序重启后),我希望将存储的属性设置回我提供的对象。 似乎所有标准序列化程序只能为我生成一个新对象(这也需要一个公共无参数构造函数),我必须从中手动分配所有属性。 这与我想避免的手动序列化没有太大区别,因为一组序列化属性非常大,并且在项目生命周期中可能会改变几次。 在这一点上,我非常接近编写自己的轻量级序列化器,但也许有人可以提出更标准的方法来做这些事情?