艾伟_转载:使用.NET框架自带的Json序列化类

简介: 主要用到的类:DataContractJsonSerializer,该类被申明在System.Runtime.Serialization.Json命名空间下,而System.Runtime.Serialization.
主要用到的类:DataContractJsonSerializer,该类被申明在System.Runtime.Serialization.Json命名空间下,而System.Runtime.Serialization.Json命名空间是被放置在System.ServiceModel.Web.dll程序集里,因此我们要用到DataContractJsonSerializer类,首先应添加对System.ServiceModel.Web的引用,然后添加System.Runtime.Serialization.Json命名空间,注意DataContractJsonSerializer序列化的方式是采用数据契约序列化,因此我们可以通过DataMemberAttribute来控制那些被序列化,那些不被序列化。
例如,我们这里有一个类:
 1  [DataContract]
 2  public   class  User
 3  {
 4       public  User() { }
 5      [DataMember]
 6       public   bool  IsMember {  get set ; }
 7      [DataMember]
 8       public   string  Name {  get set ; }
 9       public   int  Age {  get set ; }
10  }

我们现在在一个ashx文件里创建一个实例并将其序列化:

public   class  JsonWriter : IHttpHandler
{
    
public   void  ProcessRequest (HttpContext context)
    {
        DataContractJsonSerializer serializer 
=   new  DataContractJsonSerializer( typeof (User));
        User user 
=   new  User() { IsMember  =   true , Name  =   " Zhang Liang " , Age  =   24  };
        serializer.WriteObject(context.Response.OutputStream, user);
        context.Response.ContentType 
=   " text/plain " ;
    }
 
    
public   bool  IsReusable {
        
get  {
            
return   false ;
        }
    }
}

看输出结果:

{ " IsMember " : true , " Name " : " Zhang Liang " }

反序列化:

public   class  JsonWriter : IHttpHandler
{
    
public   void  ProcessRequest (HttpContext context)
    {
        DataContractJsonSerializer serializer 
=   new  DataContractJsonSerializer( typeof (User));
        User user 
=  serializer.ReadObject(context.Request.InputStream)  as  User;
        
// .使用User对象
        context.Response.Write( " OK " );
        context.Response.ContentType 
=   " text/plain " ;
    }
 
    
public   bool  IsReusable {
        
get  {
            
return   false ;
        }
    }
}
目录
相关文章
|
1月前
|
数据可视化 网络协议 C#
C#/.NET/.NET Core优秀项目和框架2024年3月简报
公众号每月定期推广和分享的C#/.NET/.NET Core优秀项目和框架(每周至少会推荐两个优秀的项目和框架当然节假日除外),公众号推文中有项目和框架的介绍、功能特点、使用方式以及部分功能截图等(打不开或者打开GitHub很慢的同学可以优先查看公众号推文,文末一定会附带项目和框架源码地址)。注意:排名不分先后,都是十分优秀的开源项目和框架,每周定期更新分享(欢迎关注公众号:追逐时光者,第一时间获取每周精选分享资讯🔔)。
|
3月前
|
开发框架 JavaScript 前端开发
5个.NET开源且强大的快速开发框架(帮助你提高生产效率)
5个.NET开源且强大的快速开发框架(帮助你提高生产效率)
111 4
|
3天前
|
XML 存储 JSON
c#XML、JSON的序列化和反序列化,看完你就懂了
c#XML、JSON的序列化和反序列化,看完你就懂了
6 0
|
4天前
|
JSON Java Linux
【探索Linux】P.30(序列化和反序列化 | JSON序列化库 [ C++ ] )
【探索Linux】P.30(序列化和反序列化 | JSON序列化库 [ C++ ] )
19 2
|
8天前
|
人工智能 自然语言处理 算法
分享几个.NET开源的AI和LLM相关项目框架
分享几个.NET开源的AI和LLM相关项目框架
|
16天前
|
JSON 编译器 Go
Golang深入浅出之-结构体标签(Tags):JSON序列化与反射应用
【4月更文挑战第22天】Go语言结构体标签用于添加元信息,常用于JSON序列化和ORM框架。本文聚焦JSON序列化和反射应用,讨论了如何使用`json`标签处理敏感字段、实现`omitempty`、自定义字段名和嵌套结构体。同时,通过反射访问标签信息,但应注意反射可能带来的性能问题。正确使用结构体标签能提升代码质量和安全性。
15 0
|
2月前
|
存储 JSON JavaScript
Python中的JSON与Pickle模块:数据序列化和反序列化的利器
在Python编程中,数据的序列化和反序列化是经常遇到的操作。序列化是将数据结构或对象状态转换为可以存储或传输的格式的过程,而反序列化则是这个过程的逆操作,即将序列化的数据重新转换回原来的数据结构或对象状态。Python中的JSON和Pickle模块就是实现数据序列化和反序列化的强大工具。
|
2月前
|
开发框架 网络协议 .NET
深入.net框架
深入.net框架
12 0
|
2月前
|
JSON Java Maven
使用Jackson进行 JSON 序列化和反序列化
使用Jackson进行 JSON 序列化和反序列化
29 0
|
2月前
|
存储 JSON 安全
序列化模块pickle和json有什么区别
序列化模块pickle和json有什么区别
22 0