Object 序列化与反序列化

问题描述

stringqueryInfoXml="<?xmlversion="1.0"encoding="utf-16"?><QueryInfo><Start>0</Start><Limit>0</Limit><IsQueryCount>false</IsQueryCount><IsQueryCountOnly>false</IsQueryCountOnly><ClientQueryParams><RoleId>1</RoleId><ParentRoleIdStr>1</ParentRoleIdStr></ClientQueryParams></QueryInfo>";我要把上面XML反序列化成QueryInfo对象,QueryInfo类中有一个属性ClientQueryParams是Object类型,我现在要怎么样才能获取ClientQueryParams节点下的值,反序列化无法直接获取?求助大神们

解决方案

解决方案二:
反序列化根本不知道你是什么东西,难道你连ClientQueryParams传的是什么都不知道?或者是什么样子的格式?
解决方案三:
就是把上面XML反序列化后的值放到QueryInfo对象对应的属性里,但是这个对象属性有一个是OBJECT类型,我要的是怎么获取ClientQueryParams节点下的值
解决方案四:
publicstaticstringSerialize(objecto){XmlSerializerser=newXmlSerializer(o.GetType());StringBuildersb=newStringBuilder();StringWriterwriter=newStringWriter(sb);ser.Serialize(writer,o);returnsb.ToString();}publicstaticTDeserialize<T>(strings){XmlDocumentxdoc=newXmlDocument();try{xdoc.LoadXml(s);XmlNodeReaderreader=newXmlNodeReader(xdoc.DocumentElement);XmlSerializerser=newXmlSerializer(typeof(T));objectobj=ser.Deserialize(reader);return(T)obj;}catch{returndefault(T);}}[Serializable()]publicclassQueryInfo{publicintX_Start;[XmlElement("Start")]publicintStart{get{returnX_Start;}set{X_Start=value;}}publicintX_Limit;[XmlElement("Limit")]publicintLimit{get{returnX_Limit;}set{X_Limit=value;}}publicboolX_IsQueryCount;[XmlElement("IsQueryCount")]publicboolIsQueryCount{get{returnX_IsQueryCount;}set{X_IsQueryCount=value;}}publicboolX_IsQueryCountOnly;[XmlElement("IsQueryCountOnly")]publicboolIsQueryCountOnly{get{returnX_IsQueryCountOnly;}set{X_IsQueryCountOnly=value;}}[XmlElement("ClientQueryParams")]publicList<ClientQueryParams>ClientQueryParams{get;set;}}publicclassClientQueryParams{publicintX_RoleId;[XmlElement("RoleId")]publicintRoleId{get{returnX_RoleId;}set{X_RoleId=value;}}publicintX_ParentRoleIdStr;[XmlElement("ParentRoleIdStr")]publicintParentRoleIdStr{get{returnX_ParentRoleIdStr;}set{X_ParentRoleIdStr=value;}}}stringqueryInfoXml="<?xmlversion="1.0"encoding="utf-16"?><QueryInfo><Start>0</Start><Limit>0</Limit><IsQueryCount>false</IsQueryCount><IsQueryCountOnly>false</IsQueryCountOnly><ClientQueryParams><RoleId>1</RoleId><ParentRoleIdStr>1</ParentRoleIdStr></ClientQueryParams></QueryInfo>";privatevoidbutton1_Click(objectsender,EventArgse){varl=Deserialize<QueryInfo>(queryInfoXml);intStart=l.Start;intLimit=l.Limit;boolIsQueryCount=l.IsQueryCount;boolIsQueryCountOnly=l.IsQueryCountOnly;List<ClientQueryParams>list=l.ClientQueryParams;intRoleid=list[0].X_RoleId;intParentRoleIdStr=list[0].X_ParentRoleIdStr;}

解决方案五:
XML和JSON正序列化可以;——但是反序列化必须指定类型。字节流的正反序列化可以不指定类型。
解决方案六:
使QueryInfo继承IXmlSerializable对象,在里面重写publicvoidReadXml(System.Xml.XmlReaderreader)方法然后去处理。
解决方案七:
<ClientQueryParams>的类型最好在序列化的时候保存下来。
解决方案八:
如何从文件中读取信息反序列化为对象protectedvoidButton2_Click(objectsender,EventArgse){stringfileName=Server.MapPath("~/File/SerializeFile.txt");Streamfs=newFileStream(fileName,FileMode.Open);IFormatterformat=newBinaryFormatter();UserInfouser=(UserInfo)format.Deserialize(fs);//反序列化Response.Write(user.UserName);fs.Close();}

时间: 2024-08-02 13:00:49

Object 序列化与反序列化的相关文章

C#对象序列化和反序列化

C#对象序列化和反序列化,如下代码示例: using System;  using System.Text;  using System.Collections.Generic;  using System.IO;  using System.Runtime.Serialization.Formatters.Binary;    class SerializableOperate  {      private static void ObjectSerializable(object obj,

ASP.NET中JSON的序列化和反序列化

导读:JSON是专门为浏览器中的网页上运行的JavaScript代码而设计的一种数据格式.在网站应用中使用JSON的场景越来越多,本文介绍 ASP.NET中JSON的序列化和反序列化,主要对JSON的简单介绍,ASP.NET如何序列化和反序列化的处理,在序列化和反序列化对日期时间.集合.字典的处理. 一.JSON简介 JSON(JavaScript Object Notation,JavaScript对象表示法)是一种轻量级的数据交换格式. JSON是"名值对"的集合.结构由大括号'{

WPF 字体、颜色等属性的序列化和反序列化

WPF自带的一些属性比如System.Windows.Media.Brush.System.Windows.Media.FontFamily.System.Windows.FontWeight等不具有直接序列化能力,本文针对这一点设计名为PropertySerializateDictionary的类,实现了不同类不同对象公有属性的序列化和反序列化.本类继承于Dictionary<string, TypeAndValue>, IXmlSerializable,调用了自实现类TypeAndValu

Windows 8 Store Apps学习(60) 通信: 获取网络信息, 序列化和反序列化

介绍 重新想象 Windows 8 Store Apps 之 通信 获取网络信息 序列化 - json 序列化 - xml 序列化 - rss atom 示例 1.演示如何获取网络的相关信息 Communication/NetworkInfo.xaml.cs /* * 演示如何获取网络的相关信息 */ using System; using System.Collections.Generic; using Windows.Networking.Connectivity; using Windo

详解Python中的序列化与反序列化的使用

  这篇文章主要介绍了详解Python中的序列化与反序列化的使用,针对pickle和cPickle对象进行了探究,需要的朋友可以参考下 学习过marshal模块用于序列化和反序列化,但marshal的功能比较薄弱,只支持部分内置数据类型的序列化/反序列化,对于用户自定义的类型就无能为力,同时marshal不支持自引用(递归引用)的对象的序列化.所以直接使用marshal来序列化/反序列化可能不是很方便.还好,python标准库提供了功能更加强大且更加安全的pickle和cPickle模块. cP

JSON序列化与反序列化

以下是对JSON序列化与反序列化进行了详细的分析介绍,需要的朋友可以过来参考下   方法一:引入System.Web.Script.Serialization命名空间使用 JavaScriptSerializer类实现简单的序列化序列化类:Personnel 复制代码 代码如下:     public class Personnel         {             public int Id { get; set; }             public string Name {

asp.net JSON序列化与反序列化使用

  对JSON数据进行序列化和反序列化 可以使用DataContractJsonSerializer类将类型实例序列化为JSON字符串,并将JSON字符串反序列化为类型实例. DataContractJsonSerializer在System.Runtime.Serialization.Json命名空间下,.NET Framework 3.5包含在System.ServiceModel.Web.dll中,需要添加对其的引用;.NET Framework 4在System.Runtime.Seri

C#实现的json序列化和反序列化代码实例

  这篇文章主要介绍了C#实现的json序列化和反序列化代码实例,本文讲解了两种实现方法,并直接给出代码示例,需要的朋友可以参考下 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64

Json序列化和反序列化方法解析

 本篇文章主要是对Json序列化和反序列化方法进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助  代码如下:  /// <summary>         /// Json序列化,用于发送到客户端         /// </summary>         public static string ToJsJson(this object item)         {               DataContractJsonSerializer serializer