当前位置: 首页 > news >正文

SerializeDeserialize

目录

  • 1.XML
  • 2.Json

至页首    至页尾

1.XML

1.1 XML序列化/反序列化

using System;
using System.Collections.Generic;
using System.IO;
using System.Xml.Serialization;

namespace XMLSerialize
{
    public class UserInfo
    {
        public int Id;
        public string UserName;
        public string UserPass;
        public string Email;
        public DateTime RegTime;
    }
    class Program
    {
        private static List<UserInfo> list = new List<UserInfo>()
        {
            new UserInfo()
            {Id = 1,UserName = "Kyle",UserPass = "FDASDFAS",Email = "zhangsan@163.com",RegTime = DateTime.Now},
            new UserInfo()
            {Id = 2,UserName = "Bob",UserPass = "FDASDFAS",Email = "lisi@163.com",RegTime = DateTime.Now},
            new UserInfo()
            {Id = 3,UserName = "Lily",UserPass = "FDASDFAS",Email = "wangwu@163.com",RegTime = DateTime.Now},
            new UserInfo()
            {Id = 4,UserName = "John",UserPass = "FDASDFAS",Email = "zhaoliu@163.com",RegTime = DateTime.Now},
            new UserInfo()
            {Id = 5,UserName = "David",UserPass = "FDASDFAS",Email = "tianqi@163.com",RegTime = DateTime.Now},
            new UserInfo()
            {Id = 6,UserName = "Nancy",UserPass = "FDASDFAS",Email = "wangba@163.com",RegTime = DateTime.Now}
        };
        static void Main(string[] args)
        {
            //序列化对象生成文件
            WriteSingleXml();
            //反序列化文件生成对象
            ReadListXml();
            Console.ReadKey();
        }
        private static void WriteSingleXml()
        {
            //序列化集合为xml文件
            Console.WriteLine("collection to xml");
            var reader = new XmlSerializer(typeof(List<UserInfo>));
            //写入文件
            using (var fs = File.OpenWrite(@"D:\UserInfo.xml"))
            {
                reader.Serialize(fs, list);
            }
            Console.WriteLine("write in succeed");
        }
        private static void ReadListXml()
        {
            //反序列化文件
            Console.WriteLine("xml to collection");
            var reader = new XmlSerializer(typeof(List<UserInfo>));
            using (var fs = File.OpenRead(@"D:\UserInfo.xml"))
            {
                var result = reader.Deserialize(fs) as List<UserInfo>;
                foreach (var r in result)
                {
                    Console.WriteLine(r.Email);
                }
                //result.ForEach(Console.WriteLine);
            }
            Console.WriteLine("deserialize succeed");
        }
    }
}

output

collection to xml
write in succeed
xml to collection
zhangsan@163.com
lisi@163.com
wangwu@163.com
zhaoliu@163.com
tianqi@163.com
wangba@163.com
deserialize succeed

XML

<?xml version="1.0"?>
<ArrayOfUserInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <UserInfo>
    <Id>1</Id>
    <UserName>Kyle</UserName>
    <UserPass>FDASDFAS</UserPass>
    <Email>zhangsan@163.com</Email>
    <RegTime>2018-09-19T14:51:03.3560463+08:00</RegTime>
  </UserInfo>
  <UserInfo>
    <Id>2</Id>
    <UserName>Bob</UserName>
    <UserPass>FDASDFAS</UserPass>
    <Email>lisi@163.com</Email>
    <RegTime>2018-09-19T14:51:03.3560463+08:00</RegTime>
  </UserInfo>
  ...
</ArrayOfUserInfo>

1.2 创建XML文件


2.Json

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.Serialization;

namespace JsonSerializerAndDeSerializer
{
    [DataContract] // 使用DataContractJsonSerializer必需
   public class Student
    {
        [DataMember]
       public int ID { get; set; }

        [DataMember]
       public string Name { get; set; }

        [DataMember]
       public int Age { get; set; }

        [DataMember]
       public string Sex { get; set; }
    }
}

2.1 DataContractJsonSerializer

using System.Runtime.Serialization.Json;
Student stu = new Student()
 {
     ID = 1,
     Name = "kyle",
     Sex = "male",
     Age = 23
 };
//序列化
DataContractJsonSerializer js = new DataContractJsonSerializer(typeof(Student));
MemoryStream msObj = new MemoryStream();
//将序列化之后的Json格式数据写入流中
js.WriteObject(msObj, stu);
msObj.Position = 0;
//从0这个位置开始读取流中的数据
StreamReader sr = new StreamReader(msObj, Encoding.UTF8);
string json = sr.ReadToEnd();
sr.Close();
msObj.Close();
Console.WriteLine(json);

//反序列化
string toDes = json;
//string to = "{\"ID\":\"1\",\"Name\":\"kyle\",\"Sex\":\"male\",\"Age\":\"1230\"}";
using (var ms = new MemoryStream(Encoding.Unicode.GetBytes(toDes)))
{
    DataContractJsonSerializer deseralizer = new DataContractJsonSerializer(typeof(Student));
    Student model = (Student)deseralizer.ReadObject(ms);// //反序列化ReadObject
    Console.WriteLine("ID=" + model.ID);
    Console.WriteLine("Name=" + model.Name);
    Console.WriteLine("Age=" + model.Age);
    Console.WriteLine("Sex=" + model.Sex);
}
Console.ReadKey(); 

2.2 JavaScriptSerializer

using System.Web.Script.Serialization;
Student stu = new Student()
   {
       ID = 1,
       Name = "Bob",
       Age = 18,
       Sex = "male"
   };

JavaScriptSerializer js = new JavaScriptSerializer();
string jsonData = js.Serialize(stu);//序列化
Console.WriteLine(jsonData);


反序列化方式一:
string desJson = jsonData;
Student model = js.Deserialize<Student>(desJson);// 反序列化
string message = string.Format("ID={0},Name={1},Age={2},Sex={3}", model.ID, model.Name, model.Age, model.Sex);
Console.WriteLine(message);
Console.ReadKey(); 


反序列化方式2
dynamic modelDy = js.Deserialize<dynamic>(desJson); //反序列化
string messageDy = string.Format("动态的反序列化,ID={0},Name={1},Age={2},Sex={3}",
    modelDy["ID"], modelDy["Name"], modelDy["Age"], modelDy["Sex"]);//这里要使用索引取值,不能使用对象.属性
Console.WriteLine(messageDy);
Console.ReadKey(); 

2.3 JSON.NET包

首先安装newtonsoft.JSON或在Visual Studio中,工具菜单->管理NuGet包->搜索JSON.NET包

using Newtonsoft.Json;
List<Student> lstStuModel = new List<Student>() 
{

new Student(){ID=1,Name="A",Age=250,Sex="male"},
new Student(){ID=2,Name="B",Age=300,Sex="female"}
};

//Json.NET序列化
string jsonData = JsonConvert.SerializeObject(lstStuModel);

Console.WriteLine(jsonData);
Console.ReadKey();


//Json.NET反序列化
string json = @"{ 'Name':'C#','Age':'3000','ID':'1','Sex':'女'}";
Student descJsonStu = JsonConvert.DeserializeObject<Student>(json);//反序列化
Console.WriteLine(string.Format("反序列化: ID={0},Name={1},Sex={2},Sex={3}", descJsonStu.ID, descJsonStu.Name, descJsonStu.Age, descJsonStu.Sex));
Console.ReadKey(); 

至目录    至页首

转载于:https://www.cnblogs.com/jizhiqiliao/p/10649098.html

相关文章:

  • Unity3dShader边缘发光效果
  • 利用python jieba库统计政府工作报告词频
  • Azure linux centos 默认登陆账号是什么?
  • TeeChart Pro VCL/FMX教程(一):入门——构建图表
  • Sass 快速入门教程
  • 结对开发石家庄地铁查询系统
  • P2V操作完整步骤,物理机转换openstack虚拟机
  • eclipse中利用hibernate插件,根据数据库表反向生成Javabean
  • 工厂模式
  • 1.XGBOOST算法推导
  • XCode 快捷键
  • Flutter:界面刷新和生命周期
  • OGNL
  • .Net转Java自学之路—SpringMVC框架篇六(异常处理)
  • Python 的property的实现 .
  • 分享的文章《人生如棋》
  • Computed property XXX was assigned to but it has no setter
  • ES6系列(二)变量的解构赋值
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • js 实现textarea输入字数提示
  • js正则,这点儿就够用了
  • mysql外键的使用
  • swift基础之_对象 实例方法 对象方法。
  • vue学习系列(二)vue-cli
  • WebSocket使用
  • 百度地图API标注+时间轴组件
  • 代理模式
  • 开发了一款写作软件(OSX,Windows),附带Electron开发指南
  • 聊聊springcloud的EurekaClientAutoConfiguration
  • 如何选择开源的机器学习框架?
  • 使用权重正则化较少模型过拟合
  • RDS-Mysql 物理备份恢复到本地数据库上
  • ​软考-高级-系统架构设计师教程(清华第2版)【第9章 软件可靠性基础知识(P320~344)-思维导图】​
  • #控制台大学课堂点名问题_课堂随机点名
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (C#)Windows Shell 外壳编程系列9 - QueryInfo 扩展提示
  • (WSI分类)WSI分类文献小综述 2024
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (附源码)ssm高校社团管理系统 毕业设计 234162
  • (学习日记)2024.01.09
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • (一)RocketMQ初步认识
  • (一)UDP基本编程步骤
  • (转)平衡树
  • .class文件转换.java_从一个class文件深入理解Java字节码结构
  • .FileZilla的使用和主动模式被动模式介绍
  • .naturalWidth 和naturalHeight属性,
  • .Net IE10 _doPostBack 未定义
  • .net php 通信,flash与asp/php/asp.net通信的方法
  • .net 反编译_.net反编译的相关问题
  • .Net 中的反射(动态创建类型实例) - Part.4(转自http://www.tracefact.net/CLR-and-Framework/Reflection-Part4.aspx)...
  • .NET高级面试指南专题十一【 设计模式介绍,为什么要用设计模式】
  • .NET中统一的存储过程调用方法(收藏)
  • .w文件怎么转成html文件,使用pandoc进行Word与Markdown文件转化
  • [ web基础篇 ] Burp Suite 爆破 Basic 认证密码