C# 复杂类型序列化与反序列化

<p>说来也不简单,需要打几个标签,非常重要的</p>
<p>上代码吧</p>
<p>对象CODE</p>
<p><textarea cols="50" rows="15" name="code" class="c-sharp">using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.Serialization;
namespace uniRMS.UUCS.Helper
{
[KnownType(typeof(ResponseParaMatersLogOff))]
[KnownType(typeof(ResponseParaMatersChangePwd))]
[KnownType(typeof(ResponseParaMatersCheck))]
[KnownType(typeof(ResponseParaMatersReg))]
[KnownType(typeof(ResponseParaMatersLogin))]
[KnownType(typeof(ResponseParaMatersBase))]
[KnownType(typeof(RequestParaMatersLogoff))]
[KnownType(typeof(RequestParaMatersChangePwd))]
[KnownType(typeof(RequestParaMatersCheck))]
[KnownType(typeof(RequestParaMatersReg))]
[KnownType(typeof(RequestParaMatersLogin))]
[KnownType(typeof(RequestParaMatersBase))]
[DataContract(Namespace = "uniRMS.UUCS.Helper")]
public class AuthenticateEntity
{
[DataMember]
public OperateEnum Operate { set; get; }
[DataMember]
public string RequestUrl { set; get; }
[DataMember]
public string ResponseUrl { set; get; }
[DataMember]
public RequestParaMatersBase RequestParaMaters { set; get; }
[DataMember]
public ResponseParaMatersBase ResponseParaMaters { set; get; }
}
[DataContract(Namespace = "uniRMS.UUCS.Helper")]
public enum OperateEnum
{
登录,
注册,
用户状态检测,
密码修改,
注销
}
#region RequestParaMaters
[KnownType(typeof(RequestParaMatersBase))]
[DataContract(Namespace = "uniRMS.UUCS.Helper")]
public abstract class RequestParaMatersBase
{
/// <summary>
///
/// </summary>
[DataMember]
public string Action { set; get; }
[DataMember]
public string SiteId { set; get; }
}
/// <summary>
/// 登录
/// </summary>
[KnownType(typeof(RequestParaMatersLogin))]
[DataContract(Namespace = "uniRMS.UUCS.Helper")]
public class RequestParaMatersLogin : RequestParaMatersBase
{
[DataMember]
public string UserName { set; get; }
[DataMember]
public string PassWord { set; get; }
[DataMember]
public string AutoLogin { set; get; }
[DataMember]
public string ReturnUrl { set; get; }
[DataMember]
public string IsLogin { set; get; }
}
/// <summary>
/// 注册
/// </summary>
[KnownType(typeof(RequestParaMatersReg))]
[DataContract(Namespace = "uniRMS.UUCS.Helper")]
public class RequestParaMatersReg : RequestParaMatersBase
{
[DataMember]
public string UserName { set; get; }
[DataMember]
public string Email { set; get; }
[DataMember]
public string PassWord { set; get; }
}
/// <summary>
/// 用户状态检测
/// </summary>
[KnownType(typeof(RequestParaMatersCheck))]
[DataContract(Namespace = "uniRMS.UUCS.Helper")]
public class RequestParaMatersCheck : RequestParaMatersBase
{
[DataMember]
public string ReturnUrl { set; get; }
[DataMember]
public string IsLogin { set; get; }
}
/// <summary>
/// 密码修改
/// </summary>
[KnownType(typeof(RequestParaMatersChangePwd))]
[DataContract(Namespace = "uniRMS.UUCS.Helper")]
public class RequestParaMatersChangePwd : RequestParaMatersBase
{
[DataMember]
public string Passeid { set; get; }
[DataMember]
public string Password { set; get; }
[DataMember]
public string Newpwd { set; get; }
}
/// <summary>
/// 注销
/// </summary>
[KnownType(typeof(RequestParaMatersLogoff))]
[DataContract(Namespace = "uniRMS.UUCS.Helper")]
public class RequestParaMatersLogoff : RequestParaMatersBase
{
[DataMember]
public string RetunUrl { set; get; }
}
#endregion
#region ResponseParamaters
[KnownType(typeof(ResponseParaMatersBase))]
[DataContract(Namespace = "uniRMS.UUCS.Helper")]
public abstract class ResponseParaMatersBase
{
[DataMember]
public string Action { set; get; }
[DataMember]
public string R { set; get; }
}
/// <summary>
/// 登录
/// </summary>
[KnownType(typeof(ResponseParaMatersLogin))]
[DataContract(Namespace = "uniRMS.UUCS.Helper")]
public class ResponseParaMatersLogin : ResponseParaMatersBase
{
[DataMember]
public string Ticket { set; get; }
[DataMember]
public string UserName { set; get; }
[DataMember]
public string ReturnUrl { set; get; }
[DataMember]
public string Email { set; get; }
[DataMember]
public string PassWord { set; get; }
[DataMember]
public string PassId { set; get; }
}
/// <summary>
/// 注册
/// </summary>
[KnownType(typeof(ResponseParaMatersReg))]
[DataContract(Namespace = "uniRMS.UUCS.Helper")]
public class ResponseParaMatersReg : ResponseParaMatersBase
{
[DataMember]
public string Passeid { set; get; }
}
/// <summary>
/// 用户信息检测
/// </summary>
[KnownType(typeof(ResponseParaMatersCheck))]
[DataContract(Namespace = "uniRMS.UUCS.Helper")]
public class ResponseParaMatersCheck : ResponseParaMatersBase
{
[DataMember]
public string PassId { set; get; }
[DataMember]
public string Ticket { set; get; }
[DataMember]
public string UserName { set; get; }
[DataMember]
public string ReturnUrl { set; get; }
[DataMember]
public string Email { set; get; }
[DataMember]
public string Password { set; get; }
}
/// <summary>
/// 修改密码
/// </summary>
[KnownType(typeof(ResponseParaMatersChangePwd))]
[DataContract(Namespace = "uniRMS.UUCS.Helper")]
public class ResponseParaMatersChangePwd : ResponseParaMatersBase
{
//与基类相同
}
/// <summary>
/// 注销
/// </summary>
[KnownType(typeof(ResponseParaMatersLogOff))]
[DataContract(Namespace = "uniRMS.UUCS.Helper")]
public class ResponseParaMatersLogOff : ResponseParaMatersBase
{
[DataMember]
public string ReturnUrl { set; get; }
}
#endregion
}

</textarea></p>
<p>工具CODE</p>
<p><textarea cols="50" rows="15" name="code" class="c-sharp"> /// <summary>
/// 从一个对象信息生成Json串
/// </summary>
/// <param name="obj"></param>
/// <returns></returns>
public static string ObjectToJson(object obj)
{
DataContractJsonSerializer json = new DataContractJsonSerializer(obj.GetType());
using (MemoryStream stream = new MemoryStream())
{
json.WriteObject(stream, obj);
return System.Text.Encoding.UTF8.GetString(stream.ToArray());
}
}
/// <summary>
/// 从一个Json串生成对象信息
/// </summary>
/// <param name="jsonString"></param>
/// <param name="obj"></param>
/// <returns></returns>
public static object JsonToObject(string jsonString, object obj)
{
DataContractJsonSerializer serializer = new DataContractJsonSerializer(obj.GetType());
using (MemoryStream mStream = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)))
{
return serializer.ReadObject(mStream);
}
}
/// <summary>
/// 将Json反序列化为强类型对象
/// </summary>
/// <typeparam name="T">强类型</typeparam>
/// <param name="jsonString">Json字符串</param>
/// <returns></returns>
public static T JsonDeserialize<T>(string jsonString)
{
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
using (MemoryStream ms=new MemoryStream (Encoding.UTF8.GetBytes(jsonString)))
{
T obj = (T)ser.ReadObject(ms);
return obj;
}
}
/// <summary>
/// 向指定页面发请求
/// </summary>
/// <param name="url">请求的URL地址</param>
/// <param name="myEncoding">编码格式</param>
/// <param name="dicPara">Post的参数列表</param>
/// <param name="isPost">请求方式true:Post否则Get</param>
/// <returns>请求将返回一个字符串</returns>
public static string RequestPage(string url, Encoding myEncoding, Dictionary<string, string> dicPara,bool isPost)
{
try
{
StringBuilder param = new StringBuilder();
var i = (dicPara == null) ? 0 : dicPara.Count;
if (dicPara != null)
{
foreach (var item in dicPara)
{
param.AppendFormat("{0}={1}", HttpUtility.UrlEncode(item.Key, myEncoding), HttpUtility.UrlEncode(item.Value, myEncoding));
i--;
if (i > 0)
{
param.AppendFormat("&");
}
}
}
byte[] postBytes = Encoding.ASCII.GetBytes(param.ToString());
HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);
req.Method = isPost ? "POST" : "GET";
if (isPost)
{
req.ContentType = "application/x-www-form-urlencoded;charset=gb2312";
req.ContentLength = postBytes.Length;
}
req.CookieContainer = new CookieContainer();
byte[] bs = Encoding.ASCII.GetBytes(param.ToString());
using (Stream reqStream = req.GetRequestStream())
{
reqStream.Write(bs, 0, bs.Length);
}
using (WebResponse wr = req.GetResponse())
{
StreamReader reader = new StreamReader(wr.GetResponseStream(), myEncoding);
string content = reader.ReadToEnd();
return content;
}
}
catch (Exception ex)
{
throw ex;
}

}</textarea></p>
<p></p>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值