博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
服务器端接受Json数据的绑定实现
阅读量:5885 次
发布时间:2019-06-19

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

1、在方法参数前加上JsonRead<T>的泛型特性

public ActionResult GetData([JsonRead(typeof(PostData))]PostData postData)

 

 

2、继承CustomModelBinder类:

public class JsonReadAttribute : CustomModelBinderAttribute    {        private Type type;        public JsonReadAttribute(Type type)        {            this.type = type;        }        public override IModelBinder GetBinder()        {            return new JsonReadModelBinder(type);        }    }

3、其中JsonReadModelBinder实现IModelBinder接口

public class JsonReadModelBinder : IModelBinder    {        private Type type;        public JsonReadModelBinder(Type type)        {            this.type = type;        }        public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)        {            var request = controllerContext.HttpContext.Request;            request.InputStream.Position = 0;            var objs = new object();            using (var s = new GZipStream(request.InputStream, CompressionMode.Decompress))            {                using (var sReader = new StreamReader(s, Encoding.UTF8))                {                    string str = sReader.ReadToEnd();                    if (type == typeof(PostData))                    {                        objs = JsonUnit.Deserialize
(str); }else if (type == typeof(PostComment)) { objs = JsonUnit.Deserialize
(str); }//if else 扩展 sReader.Close(); } } return objs; }

 

 

转载于:https://www.cnblogs.com/Benjamin/p/3612083.html

你可能感兴趣的文章
输入输出练习
查看>>
Git commit message和工作流规范
查看>>
java面试。答案源于网上
查看>>
yii中取得CActiveDataProvider的分页信息
查看>>
我的大学
查看>>
Google翻译接口收费啦
查看>>
Debian+Apache2服务器
查看>>
MySQL库和表的操作
查看>>
shell编程:编译器、解释器 变量
查看>>
yum仓库一些简单介绍
查看>>
HashMap----工作原理
查看>>
nodejs 安装 postgresql module
查看>>
【转】iOS学习之iOS禁止Touch事件
查看>>
【小记录】解决链接libcufft_static.a库出现的错误
查看>>
两列布局的几种实现方案
查看>>
Java8新特性之Collectors
查看>>
怎么用CorelDRAW制作表格
查看>>
eclipse智能配置
查看>>
安装Scrapy遇到的问题处理
查看>>
个人作业——软件产品案例分析
查看>>