.net framework 3.5 序列化
1.JSON序列化。
首先,引用程序集 System.Runtime.Serialization, 我们要使用System.Runtime.Serialization.Json,默认点不出来,这应该是一个扩展方法。所以还需要引入以下两个程序集:
System.ServiceModel
System.ServiceModel.Web
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using System.Runtime.Serialization;
- using System.Runtime.Serialization.Json;
- using System.IO;
- namespace FirsteLite.OMS.Business.Helper
- {
- public static class JsonHelper
- {
- public static string Serialize<T>(T obj)
- {
- DataContractJsonSerializer serilializer = new DataContractJsonSerializer(typeof(T));
- using (Stream stream = new MemoryStream())
- {
- serilializer.WriteObject(stream, obj);
- stream.Flush();
- stream.Position = ;
- StreamReader reader = new StreamReader(stream);
- return reader.ReadToEnd();
- }
- }
- public static T Deserialize<T>(string source)
- {
- using (MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(source)))
- {
- DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
- return (T)serializer.ReadObject(ms);
- }
- }
- }
- }
示例如下:
- var p1 = new Person
- {
- Name = "NanFei",
- Age = ,
- Gender = ,
- BirthDay = DateTime.Now
- };
- var p2 = new Person
- {
- Name = "FanJinfei",
- Age = ,
- Gender = ,
- BirthDay = DateTime.Now
- };
- var personList = new List<Person>();
- personList.Add(p1);
- personList.Add(p2);
- var json = JsonHelper.Serialize<List<Person>>(personList);
- var list = JsonHelper.Deserialize<List<Person>>(json);
2.DataContract序列化,这种兼容的可序列化类型多一些。
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Text;
- using log4net;
- using System.Xml.Serialization;
- using System.Xml;
- using System.IO;
- using System.Runtime.Serialization;
- namespace FirsteLite.OMS.Business.Helper
- {
- public static class DataContractHelper
- {
- public static ILog log = LogManager.GetLogger(typeof(DataContractHelper));
- public static string Serialize<T>(T obj)
- {
- try
- {
- using (var ms = new MemoryStream())
- {
- var serializer = new DataContractSerializer(typeof(T));
- serializer.WriteObject(ms, obj);
- return Encoding.UTF8.GetString(ms.ToArray());
- }
- }
- catch (Exception ex)
- {
- log.Error("序列化类型" + typeof(T).Name + "时发生错误。", ex);
- return null;
- }
- }
- public static T Deserialize<T>(string value)
- {
- try
- {
- var serializer = new DataContractSerializer(typeof(T));
- using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(value)))
- {
- return (T)serializer.ReadObject(ms);
- }
- }
- catch (Exception ex)
- {
- log.Error("反序列化类型" + typeof(T).Name + "时发生错误。", ex);
- return default(T);
- }
- }
- }
- }
.net framework 3.5 序列化的更多相关文章
- python-django rest framework框架之序列化
序列化与反序列化: 对象 -> 字符串 序列化 字符串 -> 对象 反序列化 rest framework序列化+Form 目的: 解决QuerySet序列化问题 功能:解析 和 过滤 - ...
- 使用Entity Framework时,序列化出错
在使用Entity Framework时,如果数据库中有两个表是一对多或者是多对多的关系,那么生成的实体类中就有一个导航属性.这个导航属性前面都加上了一个virtual关键字.这个v ...
- Django REST framework基础:序列化
表结构: class Article(models.Model): id = models.AutoField(primary_key=True) title = models.CharField(m ...
- Django REST framework 中的序列化器
在此之前定义一个序列化工具: views中的的代码 from rest_framework.viewsets import ModelViewSet from .models import B ...
- 基于Django的Rest Framework框架的序列化组件
本文目录 一 Django自带序列化组件 二 rest-framework序列化之Serializer 三 rest-framework序列化之ModelSerializer 四 生成hypermed ...
- Django Rest Framework源码剖析(六)-----序列化(serializers)
一.简介 django rest framework 中的序列化组件,可以说是其核心组件,也是我们平时使用最多的组件,它不仅仅有序列化功能,更提供了数据验证的功能(与django中的form类似). ...
- Django Rest Framework(2)-----序列化详解(serializers)
REST framework中的序列化类与Django的Form和ModelForm类非常相似.我们提供了一个Serializer类,它提供了一种强大的通用方法来控制响应的输出,以及一个ModelSe ...
- 谁能在同一文件序列化多个对象并随机读写(反序列化)?BinaryFormatter、SoapFormatter、XmlSerializer还是BinaryReader
谁能在同一文件序列化多个对象并随机读写(反序列化)?BinaryFormatter.SoapFormatter.XmlSerializer还是BinaryReader 随机反序列化器 +BIT祝威+悄 ...
- [.net 面向对象程序设计进阶] (9) 序列化(Serialization) (一) 二进制流序列化
[.net 面向对象程序设计进阶] (9) 序列化(Serialization) (一) 二进制流序列化 本节导读: 在.NET编程中,经常面向对象处理完以后要转换成另一种格式传输或存储,这种将对 ...
随机推荐
- putty连接报NetWork error:connection refused
首先通过物理终端进入到linux上,手工检查ssh发现没运行 /etc/init.d/sshd status 使用rpm -V 命令可检查到ssh的软件包正常 /rpm -V openssh-serv ...
- 从UWP到SWIFT-开始
hi,all 我呢,是一个win10 uwp的开发者,从wp7.wp8.wp8.1.win8.1 到现在的win10,一直在windows阵营,做过一些大家比较熟悉的东西现在也还是在做win10的uw ...
- 关于项目中owl文件中的类定义和属性定义
<owl:Class rdf:about="www.isinonet.com/insider#XXX"> <rdfs:label>name</rdfs ...
- c++类的嵌套(1)
在一个类的内部定义另一个类或结构体,我们称之为嵌套类(nested class),或者嵌套类型.之所以引入这样一个嵌套类,往往是因为外围类需要使用嵌套类对象作为底层实现,并且该嵌套类只用于外围类的实现 ...
- 用powershell批量新增user profile
SharePoint 2013 新系统,要在User Profile Service里把人全加一下,其实同步ad更方便,但ad里的人太多,没必要全要,只要大中华区就行了,问hr要了一份人员名单,写了个 ...
- 聊一聊jquery文件上传(支持多文件上传)
谈到文件上传,现在一般都用现成的组件可以使用.PC端的可以使用uploadify.针对微网站H5也有uploadifive.但是这组件并不能满足各种场景的需求,例如:预览 切图 放大缩小,取消之类的. ...
- Android DownloadProvider学习 (二)
DownloadManager.Request用来请求一个下载,DownloadManager.Query用来查询下载信息,这两个类的具体功能会在后面穿插介绍.DownloadManager的源码可见 ...
- Shell脚本检测文件夹是否已被挂载的方法
方法1: if grep -qs '/mnt/foo' /proc/mounts; then echo "It's mounted." else echo "It's n ...
- 《深入浅出Node.js》第6章 理解 Buffer
@by Ruth92(转载请注明出处) 第6章 理解 Buffer ✁ 为什么需要 Buffer? 在 Node 中,应用需要处理网络协议.操作数据库.处理图片.接收上传文件等,在网络流和文件的操作中 ...
- gulp监听文件变化,并拷贝到指定目录
暂时不支持目录修改.创建.删除var gulp = require('gulp'); var fs = require('fs'); var path = require('path'); var l ...