Tag: serialization

如何使用ProtoBuf-Net序列化inheritance的类

如果这是重复,我很抱歉。 我搜索了几个地方寻找我可能理解的答案,包括: ProtoBuf.net序列化派生类时不包括基类属性 使用protobuf-net序列化inheritance的类 我很抱歉,但我并不理解答案。 我正在寻找一个更快,更紧凑的二进制序列化器,ProtoBuf看起来可能是答案。 我需要序列化一组所有派生自一个基类的类。 它们有很多,所以在提交编辑类代码之前,我运行了一个简单的测试。 此外,我不想以任何可能影响反序列化使用NET二进制序列化程序生成的旧持久文件的方式修改类。 这是基类: [ProtoContract] public class BaseClass { [ProtoMember(1)] public string Name { get; set; } [ProtoMember(2)] public int Age { get; set; } } 这是派生类: [ProtoContract] public class SubClass1 : BaseClass { [ProtoMember(3)] public string Town { get; set; } [ProtoMember(4)] public Sex Sex { get; set; […]

tcpclient上的序列化数据需要状态量吗?

我使用TcpClient以字节forms发送数据,我想发送自己的类而不是数据字节。 按字节数据,我的意思是我将数据转换为字节,如下所示: using (MemoryStream bufferStream = new MemoryStream()) { using (BinaryWriter bufferData = new BinaryWriter(bufferStream)) { // Simple PONG Action bufferData.Write((byte)10); } _logger.Info(“Received PING request, Sending PONG”); return bufferStream.ToArray(); } 相反,我想像这样发送它,而不必声明它的大小或w / e public class MyCommunicationData { public ActionType Action { get; set; } public Profile User { get; set; } … } 通常,当我将数据作为字节发送时,前5个字节用于指示操作和消息大小。 但是如果我迁移到将所有数据序列化为单个类,我是否仍然需要发送它的动作和大小,或者使用序列化消息,客户端和服务器将知道要读取的内容等,或者有没有办法这样做我可以发送它而不必指定序列化对象的东西? […]

使用Json.net – ac#object的部分自定义序列化

我使用Newtonsofts的Json.Net将一些对象数组序列化为json。 对象具有一组共同的属性,但也具有Meta属性,这是一个字典 在序列化期间,我希望将键值对添加到我的json对象,就像它们在根级别属性中一样,就像这样…… { id: 1, name:’jeff’, food:’spinch’, spoon: ‘ýes’ } 不是这样的: { id: 1, name:’jeff’, meta:{ food:’spinch’, spoon: ‘ýes’ } } 我已经挖了JsonSerializerSettings但似乎无法发现我可以跳进去并覆盖???

为什么必须用属性标记一个类?

看到您可以将任何文档转换为字节数组并将其保存到磁盘,然后将文件重建为其原始格式(只要您的文件名包含元数据等)。 你为什么要用[Serializable]等标记一个类? 这是一个相同的想法,“元数据”类型信息,所以当你将对象转换为它的类时,事物是否正确映射?

如何强制Newtonsoft Json序列化所有属性? (“指定”属性的奇怪行为)

同事们,我在Newtonsoft.Json中遇到过一个奇怪的行为。 当我试图序列化一个看起来像这样的对象: public class DMSDocWorkflowI { [JsonProperty(“DMSDocWorkflowIResult”)] public bool DMSDocWorkflowIResult { get; set; } [JsonProperty(“DMSDocWorkflowIResultSpecified”)] public bool DMSDocWorkflowIResultSpecified { get; set; } } 使用这个简单的调用,没有自定义转换器/绑定器/合同解析器: var testObject = new DMSDocWorkflowI(); var json = JsonConvert.SerializeObject(testObject, Formatting.Indented); 或者甚至使用JToken.FromObject(…)我总是只获得一个属性: { “DMSDocWorkflowIResultSpecified”: false } 当我附加跟踪编写器时,它只捕获这个: [0]: “2016-08-30T11:06:27.779 Info Started serializing *****DMSDocWorkflowI. Path ”.” [1]: “2016-08-30T11:06:27.779 Verbose IsSpecified result for property […]

每个请求的ASP.NET Core API JSON serializersettings

根据请求中的某些值(标题或在url中),我想更改DTO对象的序列化。 为什么? 好吧,我已经将[JsonProperty(“A”)]到我的DTO,但是根据客户端(网站或移动应用程序),它是否要使用该属性。 我开始了 services .AddMvc() .AddJsonOptions(opt => { #if DEBUG opt.SerializerSettings.ContractResolver = new NoJsonPropertyNameContractResolver(); #endif } 因此,在调试时,我获得了具有完整属性名称的JSON。 我使用JsonProperty属性来缩短响应JSON,这适用于移动应用程序(Xamarin),后者反序列化回到相同的DTO。 但现在我有一个网站使用相同的API通过jQuery获取数据,但在那里我想处理DTO的完整属性名称,而不是JsonProperty属性中给出的名称。 网站和WebApi位于同一台服务器上,因此如果响应更大,则没有问题。 我开始使用中间件类来响应客户标头值,这可行,但现在我不知道如何进入JSON SerializerSettings。 搜索网络但找不到它。 在搜索时我已经阅读过关于InputFormatters和OutputFormatters,以及内容协商,但我不知道我必须去哪个方向。 我不想使用不同的设置两次部署相同的API。 如果能有所帮助,我能够改变routesconfig之类的东西。 更新 不仅JSON响应必须以两种不同的方式序列化,而且反序列化必须以两种不同的方式完成。

序列化System.Windows.Media.ImageSource对象

我正在创建一个非常基本的聊天应用程序 我用tcp连接建立聊天。 我经常通过网络流发送序列化对象,因为这样编程更简单。 无论如何,如果我有一个class person{ public string name{get;set;} }那么它将是eassy序列化该类。 当我包含一个public ImageSource Img {get;set;}我无法再序列化该类人员。 我序列化的方式是: Person p = new Person(); p.name = \\some name p.Img = \\ some image System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(p.GetType()); x.Serialize(connection.stream, p);//here is when the problem comes. I am not able to serialize it if I include an Img

无法反序列化当前的JSON数组(例如)

我正在尝试阅读我的JSON结果。 这是我的RootObject public class RootObject { public int id { get; set; } public bool is_default { get; set; } public string name { get; set; } public int quantity { get; set; } public string stock { get; set; } public string unit_cost { get; set; } } 这是我的JSON结果 [{“id”: 3636, “is_default”: true, “name”: […]

C#对象二进制序列化

我想对对象进行二进制序列化,并将结果保存到数据库中。 Person person = new Person(); person.Name = “something”; MemoryStream memorystream = new MemoryStream(); BinaryFormatter bf = new BinaryFormatter(); bf.Serialize(memorystream, person); 如何将字符串类型中的memorystream转换为要保存在数据库中,之后能够反序列化对象?

JSON中的ASP.NET Web API日期格式未成功序列化

所有, 我们正在使用ASP.NET Web API,我们有一个基于REST的服务,其中包含有效负载的JSON。 如果我将以下日期作为字符串传递,例如 sampleObj: { … myDate: “31/12/2011 00:00:00”, … } 作为JSON有效内容中的属性值,date属性被反序列化为DateTime.MinValue。 字符串格式有效吗? 我们知道格式“2012-10-17 07:45:00”成功序列化,但我们不能保证收到的所有日期都是这种格式。 有效的选择是什么?