这里介绍了几种方式之间的序列化与反序列化之间的转换

首先介绍的如何序列化,将object对象序列化常见的两种方式即string和xml对象;

第一种将object转换为string对象,这种比较简单没有什么可谈的;

 public string ScriptSerialize<T>(T t)
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
return serializer.Serialize(t);
}

第二种将object转换为xml对象:

 
 public string ScriptSerializeToXML<T>(T t)
{
XmlSerializer serializer = new XmlSerializer(typeof(T));
MemoryStream mem = new MemoryStream();
XmlTextWriter writer = new XmlTextWriter(mem,Encoding.UTF8);
XmlSerializerNamespaces ns = new XmlSerializerNamespaces();
ns.Add("","");
serializer.Serialize(writer,t,ns);
writer.Close();
return Encoding.UTF8.GetString(mem.ToArray());
}
 

下面我主要讲string对象反序列化为对应的对象;

一、将string对象反序列化为object对象

 public T ScriptDeserialize<T>(string strJson)
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
return serializer.Deserialize<T>(strJson);
}

二、将string对象反序列化为list对象

 public List<T> JSONStringToList<T>(string strJson)
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
List<T> objList = serializer.Deserialize<List<T>>(strJson);
return objList;
}

三、将string对象反序列化为datatable对象

 
  public DataTable JSONStringToDataTable<T>(string strJson)
{
DataTable dt = new DataTable();
if (strJson.IndexOf("[") > -1)//如果大于则strJson存放了多个model对象
{
strJson = strJson.Remove(strJson.Length - 1, 1).Remove(0, 1).Replace("},{", "};{");
}
JavaScriptSerializer serializer = new JavaScriptSerializer();
string[] items = strJson.Split(';'); foreach (PropertyInfo property in typeof(T).GetProperties())//通过反射获得T类型的所有属性
{
DataColumn col = new DataColumn(property.Name,property.PropertyType);
dt.Columns.Add(col);
}
//循环 一个一个的反序列化
for (int i = 0; i < items.Length; i++)
{
DataRow dr = dt.NewRow();
//反序列化为一个T类型对象
T temp = serializer.Deserialize<T>(items[i]);
foreach (PropertyInfo property in typeof(T).GetProperties())
{
dr[property.Name] = property.GetValue(temp,null);
}
dt.Rows.Add(dr);
}
return dt;
}
 

四、将xml对象反序列化为object对象

 
 public T JSONXMLToObject<T>(string strJson)
{
XmlDocument xdoc = new XmlDocument();
try
{
xdoc.LoadXml(strJson);
XmlNodeReader reader = new XmlNodeReader(xdoc.DocumentElement);
XmlSerializer ser = new XmlSerializer(typeof(T));
object obj = ser.Deserialize(reader);
return (T)obj;
}
catch
{
return default(T);
}
}
 

现在用具体的实例来如何调用他们呢?特别要注意的是将xml对象反序列化objcet对象

 public class LoginObject
{
public string Account { get; set;}
public string Password { get; set;}
}
 
 1  LoginObject loginObject = new LoginObject { Account = account, Password = password };
2 ExTools.Manage.Class.CScriptSerialize Serialize = new Class.CScriptSerialize();
3 //将object对象转换为string
4 string strJson=Serialize.ScriptSerialize(loginObject);
5
6 //将object对象转换为xml对象
7 string strJson = Serialize.ScriptSerializeToXML(loginObject);
8
9
10 //转换为list对象
11 List<LoginObject> list = Serialize.JSONStringToList<LoginObject>(strJson);
12 //将一个xml对象转换为object对象
13 strJson = strJson.Substring(1, strJson.Length - 1);
14 loginObject = Serialize.JSONXMLToObject<LoginObject>(strJson);
15 //将字符串转换为dataTable
16 DataTable dt = Serialize.JSONStringToDataTable<LoginObject>(strJson);
17 //将字符串转换为object对象
18 loginObject = Serialize.ScriptDeserialize<LoginObject>(strJson);
 

C# 序列化与反序列化几种格式的转换的更多相关文章

  1. JAVA序列化与反序列化三种格式存取(默认格式、XML格式、JSON格式)

    什么是序列化 java中的序列化(serialization)机制能够将一个实例对象的状态信息写入到一个字节流中,使其可以通过socket进行传输.或者持久化存储到数据库或文件系统中:然后在需要的时候 ...

  2. Newtonsoft.Json 序列化和反序列化 以及时间格式 2 高级使用

    手机端应用讲究速度快,体验好.刚好手头上的一个项目服务端接口有性能问题,需要进行优化.在接口多次修改中,实体添加了很多字段用于中间计算或者存储,然后最终用Newtonsoft.Json进行序列化返回数 ...

  3. Newtonsoft.Json 序列化和反序列化 以及时间格式

    1.JSON序列化 string JsonStr= JsonConvert.SerializeObject(Entity); eg:   A a=new A(); a.Name="Elain ...

  4. json的序列化和反序列化支持时间格式转换

    .NET自带的json序列有时间格式问题,为了解决自己写了个json格式的序列化和反序列化 1.引入的命名空间 using System; using System.Collections.Gener ...

  5. C# XML序列化与反序列化与XML格式详解

    1.https://www.cnblogs.com/sandyliu1999/p/4844664.html XML是有层次结构的,序列化实际就是内存化,用连续的结构化的内存来存储表示一个对象,那么这两 ...

  6. Java对象的序列化与反序列化:默认格式及JSON格式(使用jackson)

    我的技术博客经常被流氓网站恶意爬取转载.请移步原文:http://www.cnblogs.com/hamhog/p/3558663.html,享受整齐的排版.有效的链接.正确的代码缩进.更好的阅读体验 ...

  7. Newtonsoft.Json 序列化和反序列化 以及时间格式 2

    一.JSON使用JsonPropertyAttribute重命名属性名 1.先创建一个Movie对象,然后在其属性上添加JsonProperty,并指定重命名的名称.注意:属性Name和Directo ...

  8. java序列化与反序列化操作redis

     笔者在使用SSM框架项目部分功能进行测试需要使用到对象的序列化与反序列化 第一种方式:jackson Demo package com.dznfit.service; import com.dznf ...

  9. Java基础学习总结--Java对象的序列化和反序列化

    一.序列化和反序列化的概念 把对象转换成字节序列的过程称之为对象的序列化 把字节序列恢复为对象的过程称之为对象的反序列化 对象序列化的主要用途: 1)把对象的字节序列永久的保存到硬盘上,通常放在一个文 ...

随机推荐

  1. iOS开发系列--Swift语言

    概述 Swift是苹果2014年推出的全新的编程语言,它继承了C语言.ObjC的特性,且克服了C语言的兼容性问题.Swift发展过程中不仅保留了ObjC很多语法特性,它也借鉴了多种现代化语言的特点,在 ...

  2. Android注解使用之通过annotationProcessor注解生成代码实现自己的ButterKnife框架

    前言: Annotation注解在Android的开发中的使用越来越普遍,例如EventBus.ButterKnife.Dagger2等,之前使用注解的时候需要利用反射机制势必影响到运行效率及性能,直 ...

  3. 学习ASP.NET Core,怎能不了解请求处理管道[2]: 服务器在管道中的“龙头”地位

    ASP.NET Core管道由注册的服务器和一系列中间件构成.我们在上一篇中深入剖析了中间件,现在我们来了解一下服务器.服务器是ASP .NET Core管道的第一个节点,它负责完整请求的监听和接收, ...

  4. MySQL中interactive_timeout和wait_timeout的区别

    在用mysql客户端对数据库进行操作时,打开终端窗口,如果一段时间没有操作,再次操作时,常常会报如下错误: ERROR (HY000): Lost connection to MySQL server ...

  5. 基于AOP的MVC拦截异常让代码更优美

    与asp.net 打交道很多年,如今天微软的优秀框架越来越多,其中微软在基于mvc的思想架构,也推出了自己的一套asp.net mvc 框架,如果你亲身体验过它,会情不自禁的说‘漂亮’.回过头来,‘漂 ...

  6. C++随笔:.NET CoreCLR之corleCLR核心探索之coreconsole(2)

    这篇文章是上篇的续集,本文将会继续介绍coreconsole.cpp里面的逻辑.也许大家会看一些CLR的书,我承认我没有看过,因为我觉得一个人,他再NB,那也是他自己的眼光,而且说句难听的,CLR也不 ...

  7. Solr 排除查询

    前言 solr排除查询也就是我们在数据库和程序中经常处理的不等于,solr的语法是在定语前加[-].. StringBuilder sbHtml=new StringBuilder(); shBhtm ...

  8. 前端自动化构建工具gulp记录

    一.安装 1)安装nodejs 通过nodejs的npm安装gulp,插件也可以通过npm安装.windows系统是个.msi工具,只要一直下一步即可,软件会自动在写入环境变量中,这样就能在cmd命令 ...

  9. Node.js入门(一)

    一.Node.js本质上是js的运行环境. 二.可以解析js代码(没有浏览器安全级的限制): 提供系统级的API:1.文件的读写 2.进程的管理 3.网络通信 三.可以关注的四个网站: 1.https ...

  10. 如何理解DT将是未来IT的转型之路?

    如今的IT面临着内忧外患的挑战. 一方面,企业多多少少都建立了信息化,有些企业或集团甚至会有数几十个分公司,包含直销.代理.零售以及第三方物流等多种业态.越是复杂的业务,信息化建设越困难,比如运用大量 ...