.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编程中,经常面向对象处理完以后要转换成另一种格式传输或存储,这种将对 ...
随机推荐
- ObjC宏定义-预编译小功能
以前看来#号,好像只是预编译,原来它还可以有跟Swift中"\( )"的拼接功能 例如: #define string(x) #x 意思就是 string(x) = "x ...
- android 帧动画的实现及图片过多时OOM解决方案(一)
一,animation_list.xml中静态配置帧动画的顺序,如下: <?xml version="1.0" encoding="utf-8"?> ...
- Mybatis 源码分析--crud
增加源码分析-insert() --------------------------------------------------------------------- public int ins ...
- Excel常用操作
[对Excel工作表,按某一列数据进行排序] 选中这些数据,在菜单栏上点"数据 - 排序",在弹出的窗口中的主要关键字里选择这一列,按升序或降序,那么其它的数据也会跟着它一一对应变 ...
- 【Python】str类方法说明
#capitalize():字符串首字符大写 string = 'this is a string.'new_str = string.capitalize()print(new_str)#输出:Th ...
- Android 开发常用命令
1.生成keystore文件 keytool -exportcert -keystore keystore_path -list -v 2.查看APK签名 keytool -list -printce ...
- react native 之 react-native-image-picke的详细使用图解
最近需要在react native项目中集成相机和相册的功能,于是在网上找了一个好用的第三方插件:react-native-image-picke. 该插件可以同时给iOS和Android两个平台下使 ...
- JAVA(2)
java面向对象编程的四大特征: 1.抽象 2.封装 3.继承 4.多态 封装 //职员 class Clerk { public String name; //private私有的 private ...
- JavaScript:substr vs substring vs slice
参考文章: JavaScript取子串方法slice,substr,substring对比表
- 传智播客JavaWeb day11--事务的概念、事务的ACID、数据库锁机制、
1. 什么叫做事务? 2.默认情况下每一条sql语句都是一个事务,然后自动提交事务 ps:如果想多条语句占一个事务,则可以手动设置SetAutoCommit为false 3.关键字 start tr ...