Tag: 序列化

忽略在序列化为JSON时抛出exception的类成员

我正在使用Newtonsoft JSON序列化程序,它适用于大多数对象。 不幸的是,当我尝试序列化一个大对象时,我得到一个JsonSerializationException ,其中一个成员抛出一个NullReferenceException 。 反正有没有忽略违规成员并序列化对象的其余部分? 我想也许在JsonSerializerSettings ? 这是我想要做的简化版本: private class TestExceptionThrowingClass { public string Name { get { return “The Name”; } } public string Address { get { throw new NullReferenceException(); } } public int Age { get { return 30; } } } [Test] public void CanSerializeAClassWithAnExceptionThrowingMember() { // Arrange var toSerialize […]

在C ++中序列化然后在C#中反序列化?

有没有一种简单的方法可以用c ++(xml或二进制)序列化数据,然后在C#中反序列化数据? 我正在使用一些不能运行.Net的远程WINNT机器。 我的服务器应用程序完全用C#编写,所以我想要一种简单的方法来共享简单的数据(主要是键值对,也许是SQL结果集的一些表示)。 我认为最好的方法是在客户端以某种预定义格式将数据写入xml,将xml文件传输到我的服务器,并让C#包装器将xml读入可用的c#对象。 客户端和服务器通过tcp连接进行通信,我真正想要的是将客户端内存中的数据序列化,通过套接字将二进制数据传输到ac#内存流,我可以将其反序列化为ac#对象(消除文件)创造,转移等),但我不认为这样的事情存在。 随意赐教。 编辑 我知道我可以在c ++应用程序中创建一个结构并在c#中定义它并以这种方式传输数据,但在我的脑海中,感觉就像我限制了可以发送的内容。 我必须为对象等设置预定义的大小

C#JSON自定义序列化

有没有一种方法/库可以让我自定义类似于GSON自定义序列化器的JSON序列化? 这是我想要得到的: 这个对象: KeyValuePair(“Age”,10)myAge 通常会被序列化为 “myAge”:{“Key”:“Age”,“Value”:10} 虽然我希望它序列化如下: “年龄”:10代替。 有任何想法吗?

WCF返回ArrayOfKeyValueOfintstringKeyValueOfintstring 而不是List 和List instread of List

所以我花了最后几个小时调查这个问题,显然我不是唯一一个。 为什么我的词典和列表被作为数组返回? 我知道为了兼容性,Arrays被用作默认值。 WCF有意识地努力使自己远离.Net依赖。 但我的服务器和客户端都是用C#.Net开发的,所以我没事。 以下是仅针对StackOverflow的类似问题的示例: WCF服务返回数组而不是List 为什么WCF会像我期望的那样返回myObject []而不是List? WCF服务返回一个字典数组 WCF代理返回数组而不是列表甚至收集类型== Generic.List WCF返回数组而不是列表甚至收集类型== Generic.List 为什么我的WCF服务返回而ARRAY而不是List? 使用svcutil.exe生成的WCF服务代理中的数组而不是列表 我设置的内容: 我通过这个命令生成代理: C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin>svcutil.exe /language:cs /out:generatedProxy.cs /config:app.config /ct:System.Collections.Generic.List`1 http://192.168.0.99:9000/ProjectDatabase/?? 我的服务合同如下: [ServiceContract] public interface IMyContract { [OperationContract] [ServiceKnownType(typeof(Dictionary))] Dictionary getClassDictionary(); } 我的实施: public Dictionary getClassDictionary() { Dictionary myDict = new Dictionary(); myDict.Add(1, “Geometry”); myDict.Add(2, “Algebra”); myDict.Add(3, “Graph Theory”); […]

如何在序列化特定类型时使JSON.Net序列化程序调用ToString()?

我正在使用Newtonsoft.Json序列化程序将C#类转换为JSON。 对于某些类,我不需要序列化程序将实例添加到单个属性,而只需在对象上调用ToString,即 public class Person { public string FirstName { get; set; } public string LastName { get; set; } public override string ToString() { return string.Format(“{0} {1}”, FirstName, LastName ); } } 我应该怎么做才能将Person对象序列化为ToString()方法的结果? 我可能有很多像这样的类,所以我不想最终得到一个特定于Person类的序列化程序,我希望有一个可以适用于任何classe(通过属性我猜)。

在C#中保存字典 – 序列化?

我正在编写一个C#应用程序,需要在启动时读取大约130,000(String,Int32)对到Dictionary。 这些对存储在.txt文件中,因此很容易被任何人修改,这在上下文中是危险的。 我想问一下是否有办法保存这个字典,以便可以合理安全地存储信息,而不会在启动时失去性能。 我已经尝试过使用BinaryFormatter ,但问题是原始程序在启动时需要125ms到250ms来读取txt中的信息并构建字典,反序列化生成的二进制文件需要2s,这不是太多本身但与原始性能相比,速度降低了8-16倍。 注意:加密很重要,但最重要的应该是从磁盘保存和读取字典的方法 – 可能来自二进制文件 – 而不必在每一行上使用Convert.ToInt32,从而提高性能。

将C#类直接序列化到SQL服务器?

任何人都可以建议将数据(实际上是一个类)序列化到数据库的最佳方法吗? 我正在使用SQL Server 2008,但我认为我需要在存储到数据库之前将类序列化为字符串/或其他数据类型? 我认为这个字段需要是文本还是二进制? SQL Server 2008(或.net 3.5)是否支持直接对数据库进行序列化? 任何帮助真的很感激

xml序列化已保存的游戏数据

我正在尝试编写一种方法来为游戏保存一些基础数据。 目前我正在尝试以xml格式保存数据,其中父元素包含元素数组,其中包含索引,完成和尝试的字段。 这是我第一次尝试序列化c#中的任何内容,所以我遇到了一些问题,目前,当我尝试deserialize化文件时,它会因为invalidoperationexception (底部的exception细节)。 这是代码。 public void SaveData() { const string filename = “data.vision”; #if WINDOWS_PHONE IsolatedStorageFile dataFile = IsolatedStorageFile.GetUserStoreForApplication(); #else IsolatedStorageFile dataFile = IsolatedStorageFile.GetUserStoreForDomain(); #endif try { // Create an isolated storage stream and initialize it as null. IsolatedStorageFileStream isolatedFileStream = null; // Open the isolated storage stream, and write the save data file. […]

在反序列化期间选择性地转义字符串中的HTML

我正在寻找一个JsonConverter ,它在字符串中转义HTML,除非应用了[AllowHtml]属性; private class ObjectWithStrings { // will be HTML-escaped public string Name { get; set; } // won’t be escaped [AllowHtml] public string Unsafe { get; set; } } 所以我正在尝试用自定义的ReadJson属性编写JsonConverter; public override bool CanConvert(Type objectType) { return objectType == typeof(string); } public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer) { var […]

在类级别配置Json.NET序列化设置

我希望使用驼峰式命名约定对我的类进行序列化和反序列化。 我知道我可以使用JsonConvert.SerializeObject(object, settings)重载,如下所述: var serializerSettings = new JsonSerializerSettings(); serializerSettings.ContractResolver = new CamelCasePropertyNamesContractResolver(); var json = JsonConvert.SerializeObject(product, serializerSettings); 有没有办法在类级别(通过属性)应用相同的配置,以便我不需要覆盖序列化设置? 我可以编写一个自定义转换器,但这对于这么简单的事情看起来有点过分。