Tag: 序列化

使用带有ItemRequired = Required.Always的Json.Net进行反序列化时忽略属性

我正在使用Json.Net将类序列化和反序列化为json和back。 我添加了一个标有[JsonObject(ItemRequired = Required.Always)] (或Required.Always )的类,这是一个新的get-only属性。 这导致以下JsonSerializationException : Newtonsoft.Json.JsonSerializationException:在JSON中找不到必需属性” 我认为用JsonIgnore标记该属性可以解决问题,但这不起作用。 如何告诉Json.Net应忽略此属性? 这是一个重现问题的最小例子: [JsonObject(ItemRequired = Required.Always)] public class Hamster { public string FirstName { get; set; } public string LastName { get; set; } [JsonIgnore] public string FullName { get { return FirstName + LastName; }} } private static void Main() { var hamster = new […]

WCF:序列化和反序列化通用集合

我有一个拥有通用列表的类Team: [DataContract(Name = “TeamDTO”, IsReference = true)] public class Team { [DataMember] private IList members = new List(); public Team() { Init(); } private void Init() { members = new List(); } [System.Runtime.Serialization.OnDeserializing] protected void OnDeserializing(StreamingContext ctx) { Log(“OnDeserializing of Team called”); Init(); if (members != null) Log(members.ToString()); } [System.Runtime.Serialization.OnSerializing] private void OnSerializing(StreamingContext ctx) { […]

System.Version未序列化

我有一个带有System.Version属性的类,如下所示: 版 建立:111 专业:1 MajorRevision:0 轻微:1 MinorRevision:10 修订版:10 当我序列化类时,版本始终为空: Client类看起来像: [Serializable] public class Client { public string Description; public string Directory; public DateTime ReleaseDate; public Version Version; }

二进制序列化和反序列化而不创建文件(通过字符串)

我正在尝试创建一个类,该类将包含用于将对象序列化/反序列化到字符串/从字符串反序列化的函数。 这就是现在的样子: public class BinarySerialization { public static string SerializeObject(object o) { string result = “”; if ((o.GetType().Attributes & TypeAttributes.Serializable) == TypeAttributes.Serializable) { BinaryFormatter f = new BinaryFormatter(); using (MemoryStream str = new MemoryStream()) { f.Serialize(str, o); str.Position = 0; StreamReader reader = new StreamReader(str); result = reader.ReadToEnd(); } } return result; } public static […]

C#数组XML序列化

我发现C#的XML序列化存在问题。 串行器的输出在正常的Win32和WinCE之间不一致(但令人惊讶的是WinCE具有IMO校正器输出)。 Win32只是忽略Class2 XmlRoot(“c2”)属性。 有没有人知道如何在Win32上获得类似WinCE的输出(因为我不希望XML标签具有序列化类的类名)。 测试代码: using System; using System.Xml.Serialization; using System.IO; namespace ConsoleTest { [Serializable] [XmlRoot(“c1”)] public class Class1 { [XmlArray(“items”)] public Class2[] Items; } [Serializable] [XmlRoot(“c2”)] public class Class2 { [XmlAttribute(“name”)] public string Name; } class SerTest { public void Execute() { XmlSerializer ser = new XmlSerializer(typeof (Class1)); Class1 test = new Class1 […]

我可以在运行时向对象属性添加属性吗?

例如,我想删除或更改下面的属性属性或添加一个新属性。 可能吗? [XmlElement(“bill_info”)] [XmlIgnore] public BillInfo BillInfo { get { return billInfo; } set { billInfo = value; } }

BinaryFormatter.Deserialize如何创建新对象?

当BinaryFormatter将流反序列化为对象时,它似乎在不调用构造函数的情况下创建新对象。 它是怎么做到的? 为什么? .NET中还有什么可以做到的吗? 这是一个演示: [Serializable] public class Car { public static int constructionCount = 0; public Car() { constructionCount++; } } public class Test { public static void Main(string[] args) { // Construct a car Car car1 = new Car(); // Serialize and then deserialize to create a second, identical car MemoryStream stream = […]

在使用JSON.NET序列化对象时,如何添加自定义根节点?

我已经为我的一些对象添加了一个自定义属性,如下所示: [JsonCustomRoot(“status”)] public class StatusDTO { public int StatusId { get; set; } public string Name { get; set; } public DateTime Created { get; set; } } 属性非常简单: public class JsonCustomRoot :Attribute { public string rootName { get; set; } public JsonCustomRoot(string rootName) { this.rootName = rootName; } } 序列化对象实例时JSON.NET的默认输出是: {“StatusId”:70,”Name”:”Closed”,”Created”:”2012-12-12T11:50:56.6207193Z”} 现在的问题是: 如何使用自定义属性的值向JSON添加根节点,如下所示 : […]

使用XmlArray反序列化xml文件?

我试图反序列化这个xml结构。 Test Test Test Test 我试过了: [Serializable] [XmlRoot(ElementName = “DietPlan”)] public class TestSerialization { [XmlArray(“Health”)] [XmlArrayItem(“Fruit”)] public string[] Fruits { get; set; } [XmlArray(“Health”)] [XmlArrayItem(“Veggie”)] public string[] Veggie { get; set; } } 但是这引发了一个exception“XML元素已经存在于当前范围内。使用XML属性为元素指定另一个XML名称或命名空间。” 谢谢你。

C#在写入磁盘之前加密序列化文件

假设我的程序有一个名为“customer”的类,客户类是可序列化的,所以我可以读取并写入磁盘。 客户类包含我想要加密的敏感信息,我知道可以保证文件安全的唯一方法是: 1 – 将文件序列化到磁盘 2 – 重新打开并加载文件 3 – 加密文件 4 – 将文件重写到磁盘 这样可行,但存在文件可能在其未加密状态下被截获的风险,而且这实际上是非常低效的。 相反,我想: 1 – 在内存中创建文件 2加密内存中的文件 3 – 将加密文件写入磁盘 这可能吗? 如果是这样的话? 提前致谢。