C#使用DataContractJsonSerializer实现Json格式的序列化和反序列化

摘要:
实体类学生:程序代码/////学生实体类//[System.Runtime.Serialization.DataContract(Namespace=“http://www.mzwu.com/“)]publicclassStudent{privatestring_Name;privateint_Age;publicStudent(strigna

实体类Student:
程序代码
/// <summary>
/// 学生实体类
/// </summary>
[System.Runtime.Serialization.DataContract(Namespace="http://www.mzwu.com/")]
public class Student
{
    private string _Name;
    private int _Age;

    public Student(string name, int age)
    {
        _Name = name;
        _Age = age;
    }

    /// <summary>
    /// 姓名
    /// </summary>
    [System.Runtime.Serialization.DataMember]
    public string Name
    {
        set {_Name = value;}
        get { return _Name; }
    }

    /// <summary>
    /// 年龄
    /// </summary>
    [System.Runtime.Serialization.DataMember]
    public int Age
    {
        set { _Age = value; }
        get { return _Age; }
    }
}

注意:必须使用DataContractAttribute对类进行标记,使用DataMemberAttribute类成员进行标记,否则该类无法被序列化。

对象转为JSON字符串
程序代码
Student stu = new Student("小李", 30);

System.Runtime.Serialization.Json.DataContractJsonSerializer json = new System.Runtime.Serialization.Json.DataContractJsonSerializer(stu.GetType());
using (MemoryStream stream = new MemoryStream())
{
    json.WriteObject(stream, stu);
    Response.Write(System.Text.Encoding.UTF8.GetString(stream.ToArray()));
}

JSON字符串转为对象


程序代码
System.Runtime.Serialization.Json.DataContractJsonSerializer json = new System.Runtime.Serialization.Json.DataContractJsonSerializer(typeof(Student));
using (MemoryStream stream = new MemoryStream(System.Text.Encoding.UTF8.GetBytes("{\"Age\":20,\"Name\":\"张三\"} ")))
{
    Student stu = (Student)json.ReadObject(stream);
    Response.Write(string.Format("name:{0},age:{1}", stu.Name, stu.Age));
}

注:.NET Framework 3.5下才可用DataContractJsonSerializer!

免责声明:文章转载自《C#使用DataContractJsonSerializer实现Json格式的序列化和反序列化》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇文件上传--基于Spring MVC框架+SmartUploadggplot2 theme相关设置—矩形设置(rect)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Oracle Forms Services Architecture

Oracle Forms Services Architecture Author:                         PTIAN(tianpan@gmail.com) Creation Date:            05/01/2012 Last Updated:              Version:             ...

CentOS JAVA安装及查看路径方法

一、安装: 方法一:手动解压JDK的压缩包,然后设置环境变量 1.在/usr/目录下创建java目录 [root@localhost ~]# mkdir/usr/java[root@localhost ~]# cd /usr/java 2.下载jdk,然后解压 [root@localhost java]# curl -O http://download.O...

【转】Java类加载原理解析

原链接 1 基本信息 每个java开发人员对java.lang.ClassNotFoundExcetpion这个异常肯定都不陌生,这背后就涉及到了java技术体系中的类加载。 Java的类加载机制是java技术体系中比较核心的部分,虽然和大部分开发人员直接打交道不多, 但是对其背后的机理有一定理解有助于排查程序中出现的类加载失败等技术问题,对理解java虚...

fio硬盘压力测试

fio测试工具支持同步(pread/pwrite)和异步(libaio)FIO是测试IOPS的非常好的工具,用来对硬件进行压力测试和验证,支持13种不同的I/O引擎,包括:sync,mmap, libaio, posixaio, SG v3, splice, null, network, syslet, guasi, solarisaio 等等。  ...

ThinkPHP 3.2 使用不当可能造成敏感信息泄露

ThinkPHP在开启DEBUG的情况下会在Runtime目录下生成日志,而且debug很多站都没关的,所以影响应该很大吧 我们来看一下ThinkPHP3.2版本生成日志结构: THINKPHP3.2 结构:ApplicationRuntimeLogsHome16_09_09.logTHINKPHP3.1结构:RuntimeLogsHome16_09_0...

windows server 2012 R2 .NET Runtime Optimization Service CPU占用高

今天在给服务器装IIS,装完后发现有个进程占用CPU很高。 进程文件: mscorsvw.exe进程名称: .NET Runtime Optimization Service 网上搜的资料 NET Runtime Optimization Service使用mscorsvw.exe,mscorsvw.exe是在后台预编译.net的assemblies(集合...