1.JSON序列化。

首先,引用程序集 System.Runtime.Serialization, 我们要使用System.Runtime.Serialization.Json,默认点不出来,这应该是一个扩展方法。所以还需要引入以下两个程序集:

System.ServiceModel
System.ServiceModel.Web

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Runtime.Serialization;
  6. using System.Runtime.Serialization.Json;
  7. using System.IO;
  8.  
  9. namespace FirsteLite.OMS.Business.Helper
  10. {
  11. public static class JsonHelper
  12. {
  13. public static string Serialize<T>(T obj)
  14. {
  15. DataContractJsonSerializer serilializer = new DataContractJsonSerializer(typeof(T));
  16. using (Stream stream = new MemoryStream())
  17. {
  18. serilializer.WriteObject(stream, obj);
  19. stream.Flush();
  20. stream.Position = ;
  21. StreamReader reader = new StreamReader(stream);
  22. return reader.ReadToEnd();
  23. }
  24. }
  25.  
  26. public static T Deserialize<T>(string source)
  27. {
  28. using (MemoryStream ms = new MemoryStream(Encoding.Unicode.GetBytes(source)))
  29. {
  30. DataContractJsonSerializer serializer = new DataContractJsonSerializer(typeof(T));
  31. return (T)serializer.ReadObject(ms);
  32. }
  33. }
  34. }
  35. }

示例如下:

  1. var p1 = new Person
  2. {
  3. Name = "NanFei",
  4. Age = ,
  5. Gender = ,
  6. BirthDay = DateTime.Now
  7. };
  8.  
  9. var p2 = new Person
  10. {
  11. Name = "FanJinfei",
  12. Age = ,
  13. Gender = ,
  14. BirthDay = DateTime.Now
  15. };
  16.  
  17. var personList = new List<Person>();
  18. personList.Add(p1);
  19. personList.Add(p2);
  20.  
  21. var json = JsonHelper.Serialize<List<Person>>(personList);
  22. var list = JsonHelper.Deserialize<List<Person>>(json);

2.DataContract序列化,这种兼容的可序列化类型多一些。

  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using log4net;
  6. using System.Xml.Serialization;
  7. using System.Xml;
  8. using System.IO;
  9. using System.Runtime.Serialization;
  10.  
  11. namespace FirsteLite.OMS.Business.Helper
  12. {
  13. public static class DataContractHelper
  14. {
  15. public static ILog log = LogManager.GetLogger(typeof(DataContractHelper));
  16.  
  17. public static string Serialize<T>(T obj)
  18. {
  19. try
  20. {
  21. using (var ms = new MemoryStream())
  22. {
  23. var serializer = new DataContractSerializer(typeof(T));
  24. serializer.WriteObject(ms, obj);
  25. return Encoding.UTF8.GetString(ms.ToArray());
  26. }
  27. }
  28. catch (Exception ex)
  29. {
  30. log.Error("序列化类型" + typeof(T).Name + "时发生错误。", ex);
  31. return null;
  32. }
  33.  
  34. }
  35.  
  36. public static T Deserialize<T>(string value)
  37. {
  38. try
  39. {
  40. var serializer = new DataContractSerializer(typeof(T));
  41. using (var ms = new MemoryStream(Encoding.UTF8.GetBytes(value)))
  42. {
  43. return (T)serializer.ReadObject(ms);
  44. }
  45. }
  46. catch (Exception ex)
  47. {
  48. log.Error("反序列化类型" + typeof(T).Name + "时发生错误。", ex);
  49. return default(T);
  50. }
  51.  
  52. }
  53. }
  54. }

.net framework 3.5 序列化的更多相关文章

  1. python-django rest framework框架之序列化

    序列化与反序列化: 对象 -> 字符串 序列化 字符串 -> 对象 反序列化 rest framework序列化+Form 目的: 解决QuerySet序列化问题 功能:解析 和 过滤 - ...

  2. 使用Entity Framework时,序列化出错

             在使用Entity Framework时,如果数据库中有两个表是一对多或者是多对多的关系,那么生成的实体类中就有一个导航属性.这个导航属性前面都加上了一个virtual关键字.这个v ...

  3. Django REST framework基础:序列化

    表结构: class Article(models.Model): id = models.AutoField(primary_key=True) title = models.CharField(m ...

  4. Django REST framework 中的序列化器

    在此之前定义一个序列化工具:     views中的的代码 from rest_framework.viewsets import ModelViewSet from .models import B ...

  5. 基于Django的Rest Framework框架的序列化组件

    本文目录 一 Django自带序列化组件 二 rest-framework序列化之Serializer 三 rest-framework序列化之ModelSerializer 四 生成hypermed ...

  6. Django Rest Framework源码剖析(六)-----序列化(serializers)

    一.简介 django rest framework 中的序列化组件,可以说是其核心组件,也是我们平时使用最多的组件,它不仅仅有序列化功能,更提供了数据验证的功能(与django中的form类似). ...

  7. Django Rest Framework(2)-----序列化详解(serializers)

    REST framework中的序列化类与Django的Form和ModelForm类非常相似.我们提供了一个Serializer类,它提供了一种强大的通用方法来控制响应的输出,以及一个ModelSe ...

  8. 谁能在同一文件序列化多个对象并随机读写(反序列化)?BinaryFormatter、SoapFormatter、XmlSerializer还是BinaryReader

    谁能在同一文件序列化多个对象并随机读写(反序列化)?BinaryFormatter.SoapFormatter.XmlSerializer还是BinaryReader 随机反序列化器 +BIT祝威+悄 ...

  9. [.net 面向对象程序设计进阶] (9) 序列化(Serialization) (一) 二进制流序列化

    [.net 面向对象程序设计进阶]  (9)  序列化(Serialization) (一) 二进制流序列化 本节导读: 在.NET编程中,经常面向对象处理完以后要转换成另一种格式传输或存储,这种将对 ...

随机推荐

  1. putty连接报NetWork error:connection refused

    首先通过物理终端进入到linux上,手工检查ssh发现没运行 /etc/init.d/sshd status 使用rpm -V 命令可检查到ssh的软件包正常 /rpm -V openssh-serv ...

  2. 从UWP到SWIFT-开始

    hi,all 我呢,是一个win10 uwp的开发者,从wp7.wp8.wp8.1.win8.1 到现在的win10,一直在windows阵营,做过一些大家比较熟悉的东西现在也还是在做win10的uw ...

  3. 关于项目中owl文件中的类定义和属性定义

    <owl:Class rdf:about="www.isinonet.com/insider#XXX"> <rdfs:label>name</rdfs ...

  4. c++类的嵌套(1)

    在一个类的内部定义另一个类或结构体,我们称之为嵌套类(nested class),或者嵌套类型.之所以引入这样一个嵌套类,往往是因为外围类需要使用嵌套类对象作为底层实现,并且该嵌套类只用于外围类的实现 ...

  5. 用powershell批量新增user profile

    SharePoint 2013 新系统,要在User Profile Service里把人全加一下,其实同步ad更方便,但ad里的人太多,没必要全要,只要大中华区就行了,问hr要了一份人员名单,写了个 ...

  6. 聊一聊jquery文件上传(支持多文件上传)

    谈到文件上传,现在一般都用现成的组件可以使用.PC端的可以使用uploadify.针对微网站H5也有uploadifive.但是这组件并不能满足各种场景的需求,例如:预览 切图 放大缩小,取消之类的. ...

  7. Android DownloadProvider学习 (二)

    DownloadManager.Request用来请求一个下载,DownloadManager.Query用来查询下载信息,这两个类的具体功能会在后面穿插介绍.DownloadManager的源码可见 ...

  8. Shell脚本检测文件夹是否已被挂载的方法

    方法1: if grep -qs '/mnt/foo' /proc/mounts; then echo "It's mounted." else echo "It's n ...

  9. 《深入浅出Node.js》第6章 理解 Buffer

    @by Ruth92(转载请注明出处) 第6章 理解 Buffer ✁ 为什么需要 Buffer? 在 Node 中,应用需要处理网络协议.操作数据库.处理图片.接收上传文件等,在网络流和文件的操作中 ...

  10. gulp监听文件变化,并拷贝到指定目录

    暂时不支持目录修改.创建.删除var gulp = require('gulp'); var fs = require('fs'); var path = require('path'); var l ...