博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
艾伟_转载:使用.NET框架自带的Json序列化类
阅读量:6800 次
发布时间:2019-06-26

本文共 1490 字,大约阅读时间需要 4 分钟。

主要用到的类: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
;
        }
    }
}
你可能感兴趣的文章
【MongoDB】深入了解MongoDB不可不知的十点
查看>>
[ACM] POJ 2635 The Embarrassed Cryptographer (同余定理,素数打表)
查看>>
又一次发现Oracle太美之glogin.sql
查看>>
hdu5387 Clock
查看>>
安装redis出现cc adlist.o /bin/sh:1:cc:not found
查看>>
初步认识Tensorflow
查看>>
tab 切换实现方法
查看>>
leetcode-First Missing Positive
查看>>
自抛球练习
查看>>
C++开发人脸性别识别教程(3)——OpenCv配置和ImageWatch插件介绍
查看>>
前端网页开发常用的问题定位方法
查看>>
自定义VIew方法
查看>>
iOS中 最新支付宝支付(AliPay) 韩俊强的博客
查看>>
京东的个性化推荐系统
查看>>
Java 泛型 泛型数组
查看>>
【SqlServer系列】表连接
查看>>
谈谈360浏览器保存密码的差异
查看>>
修改Tomcat的默认访问目录
查看>>
去除前后空格,Oracle和SQLSERVER都适用。ltrim(rtrim(’ ‘))
查看>>
Docker的容器操作
查看>>