MVC中Json的使用:Controller中Json的处理

一、当查询得到的数据符合前台要求,不需要做任何处理,直接DataList To Json 返回前台。

代码:

1  var allEntities = service.QueryByPage(this.GetSearchFilter(searchModel), "InsertedDateUtc  Descending", pageSize, searchModel.PageIndex + 1, out recordCount);
2  return Json(allEntities, JsonRequestBehavior.AllowGet);

前台得到的Json数据(两条记录)

[
    {
        "DocumentID": "61d09198-198e-403e-89a0-01b98402c8ca",
        "DocumentFileName": "189017.docx.pdf",
        "ContentType": "doc",
        "Size": 167228,
        "InsertedDateUtc": "/Date(1358762613167)/",
        "LastModifiedOnDataSource": "/Date(1358504490000)/",
        "UniqueIDOnDataSource": "189017",
        "IsActive": true,
        "HasBeenIndexed": true,
        "TradeProductID": "1e04dc4d-5a68-4982-ba88-170a3f6525f5",
        "HasProcessedForAlerts": false,
        "Congress": "ESMO-2012",
        "Authors": "Zi Ming Zhao",
        "CongressType": "Poster",
        "DocumentTitle": "立普妥-一级预防中的应用                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ",
        "EntityState": 2,
        "EntityKey": {
            "EntitySetName": "Document",
            "EntityContainerName": "MVCExampleEntities",
            "EntityKeyValues": [
                {
                    "Key": "DocumentID",
                    "Value": "61d09198-198e-403e-89a0-01b98402c8ca"
                }
            ],
            "IsTemporary": false
        }
    },
    {
        "DocumentID": "a71ea30c-b544-41fa-b008-77adcf7a0250",
        "DocumentFileName": "189153.docx.pdf",
        "ContentType": "doc",
        "Size": 136195,
        "InsertedDateUtc": "/Date(1358762610573)/",
        "LastModifiedOnDataSource": "/Date(1358778247000)/",
        "UniqueIDOnDataSource": "189153",
        "IsActive": true,
        "HasBeenIndexed": true,
        "TradeProductID": "1e04dc4d-5a68-4982-ba88-170a3f6525f5",
        "HasProcessedForAlerts": false,
        "Congress": null,
        "Authors": null,
        "CongressType": null,
        "DocumentTitle": "立普妥-碾碎服用                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ",
        "EntityState": 2,
        "EntityKey": {
            "EntitySetName": "Document",
            "EntityContainerName": "MVCExampleEntities",
            "EntityKeyValues": [
                {
                    "Key": "DocumentID",
                    "Value": "a71ea30c-b544-41fa-b008-77adcf7a0250"
                }
            ],
            "IsTemporary": false
        }
    }
]

二、当得到的数据不能满足前台需求,比如,我希望加入一个键值对存入总记录数,以方便做分页。

两种方法:

1、拼字符串,注意return 的是Content( ).

代码

var allEntities = service.QueryByPage(this.GetSearchFilter(searchModel), "InsertedDateUtc  Descending", pageSize, searchModel.PageIndex + 1, out recordCount);

           string json = JsonConvert.SerializeObject(allEntities);
           StringBuilder sb = new StringBuilder();
           sb.Append("{");
           sb.Append("\"total\"");
           sb.Append(":280,");
           sb.Append("\"rows\"");
           sb.Append(":");
           sb.Append(json);
           sb.Append("}");
  return Content(sb.ToString());

          或者直接用String:   string jsonString = "{‘total‘:280,‘rows‘:" + json + "}";  (此方法用easyui测试时,前台无法解析)。
           return Content(jsonString);

前台得到的Json数据

{
    "total": 280,
    "rows": [
        {
            "$id": "1",
            "DocumentID": "61d09198-198e-403e-89a0-01b98402c8ca",
            "DocumentFileName": "189017.docx.pdf",
            "ContentType": "doc",
            "Size": 167228,
            "InsertedDateUtc": "2013-01-21T18:03:33.167",
            "LastModifiedOnDataSource": "2013-01-18T18:21:30",
            "UniqueIDOnDataSource": "189017",
            "IsActive": true,
            "HasBeenIndexed": true,
            "TradeProductID": "1e04dc4d-5a68-4982-ba88-170a3f6525f5",
            "HasProcessedForAlerts": false,
            "Congress": "ESMO-2012",
            "Authors": "Zi Ming Zhao",
            "CongressType": "Poster",
            "DocumentTitle": "立普妥-一级预防中的应用 ",
            "EntityKey": {
                "$id": "2",
                "EntitySetName": "Document",
                "EntityContainerName": "MVCExampleEntities",
                "EntityKeyValues": [
                    {
                        "Key": "DocumentID",
                        "Type": "System.Guid",
                        "Value": "61d09198-198e-403e-89a0-01b98402c8ca"
                    }
                ]
            }
        },
        {
            "$id": "3",
            "DocumentID": "a71ea30c-b544-41fa-b008-77adcf7a0250",
            "DocumentFileName": "189153.docx.pdf",
            "ContentType": "doc",
            "Size": 136195,
            "InsertedDateUtc": "2013-01-21T18:03:30.573",
            "LastModifiedOnDataSource": "2013-01-21T22:24:07",
            "UniqueIDOnDataSource": "189153",
            "IsActive": true,
            "HasBeenIndexed": true,
            "TradeProductID": "1e04dc4d-5a68-4982-ba88-170a3f6525f5",
            "HasProcessedForAlerts": false,
            "Congress": null,
            "Authors": null,
            "CongressType": null,
            "DocumentTitle": "立普妥-碾碎服用 ",
            "EntityKey": {
                "$id": "4",
                "EntitySetName": "Document",
                "EntityContainerName": "MVCExampleEntities",
                "EntityKeyValues": [
                    {
                        "Key": "DocumentID",
                        "Type": "System.Guid",
                        "Value": "a71ea30c-b544-41fa-b008-77adcf7a0250"
                    }

2、重新创建一个新Json对象,把数据装进去。然后返回前台。

var allEntities = service.QueryByPage(this.GetSearchFilter(searchModel), "InsertedDateUtc  Descending", pageSize, searchModel.PageIndex + 1, out recordCount);
   // 创建JsonResult对象。
           JsonResult j = new JsonResult()
           {
               Data = new
               {
                   total = recordCount,
                   rows = allEntities
               }
           };
           //以下两个参数可选,前台接收有问题时可加上试试
           // j.ContentType = "application/json";
           //j.ContentEncoding = System.Text.Encoding.UTF8;
           //以下参数设置是否允许GET请求
           j.JsonRequestBehavior = JsonRequestBehavior.AllowGet;
           return j; //此处不能再用 return Json(j, JsonRequestBehavior.AllowGet);//方式,否则相当于把Json又转换了一遍Json,前台接收的数据如下(我用easyui测试时,前台无法解析)。

EasyUi环境下有问题的Json

{
    "ContentEncoding": null,
    "ContentType": null,
    "Data": {
        "total": 920,
        "rows": [
            {
                "DocumentID": "61d09198-198e-403e-89a0-01b98402c8ca",
                "DocumentFileName": "189017.docx.pdf",
                "ContentType": "doc",
                "Size": 167228,
                "InsertedDateUtc": "/Date(1358762613167)/",
                "LastModifiedOnDataSource": "/Date(1358504490000)/",
                "UniqueIDOnDataSource": "189017",
                "IsActive": true,
                "HasBeenIndexed": true,
                "TradeProductID": "1e04dc4d-5a68-4982-ba88-170a3f6525f5",
                "HasProcessedForAlerts": false,
                "Congress": "ESMO-2012",
                "Authors": "Zi Ming Zhao",
                "CongressType": "Poster",
                "DocumentTitle": "立普妥-一级预防中的应用                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ",
                "EntityState": 2,
                "EntityKey": {
                    "EntitySetName": "Document",
                    "EntityContainerName": "MVCExampleEntities",
                    "EntityKeyValues": [
                        {
                            "Key": "DocumentID",
                            "Value": "61d09198-198e-403e-89a0-01b98402c8ca"
                        }
                    ],
                    "IsTemporary": false
                }
            },
            {
                "DocumentID": "a71ea30c-b544-41fa-b008-77adcf7a0250",
                "DocumentFileName": "189153.docx.pdf",
                "ContentType": "doc",
                "Size": 136195,
                "InsertedDateUtc": "/Date(1358762610573)/",
                "LastModifiedOnDataSource": "/Date(1358778247000)/",
                "UniqueIDOnDataSource": "189153",
                "IsActive": true,
                "HasBeenIndexed": true,
                "TradeProductID": "1e04dc4d-5a68-4982-ba88-170a3f6525f5",
                "HasProcessedForAlerts": false,
                "Congress": null,
                "Authors": null,
                "CongressType": null,
                "DocumentTitle": "立普妥-碾碎服用                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ",
                "EntityState": 2,
                "EntityKey": {
                    "EntitySetName": "Document",
                    "EntityContainerName": "MVCExampleEntities",
                    "EntityKeyValues": [
                        {
                            "Key": "DocumentID",
                            "Value": "a71ea30c-b544-41fa-b008-77adcf7a0250"
                        }
                    ],
                    "IsTemporary": false
                }
            }
        ]
    },
    "JsonRequestBehavior": 0,
    "MaxJsonLength": null,
    "RecursionLimit": null
}

三 、最后一个Json数据查看工具,很方便。
JSON Viewer

时间: 2024-10-26 17:25:28

MVC中Json的使用:Controller中Json的处理的相关文章

控制器controller与指令中的link、controller中同名变量作用域的关系

angularjs中的作用域与原生js中的函数嵌套原理一致,都是存在作用域的继承.若在子控制器(同样包括在指令中的link或是controllerding中定义变量,此时指令中必须未使用scope独立作用域)未定义相关变量,那么它会向父控制器一层层查找,直到找到位为止. 若在自定义指令中的link.controller与该指令的父控制器定义了同名变量,那它的作用域是如何的呢,以及指令中的独立作用域scope会对改变量产生怎样的影响,以例说明: HTML: <div ng-controller=&qu

spring mvc Controller中使用@Value无法获取属性值

在使用spring mvc时,实际上是两个spring容器: 1,dispatcher-servlet.xml 是一个,我们的controller就在这里,所以这个里面也需要注入属性文件 org.springframework.web.servlet.DispatcherServlet 这里最终是使用WebApplicationContext parent =WebApplicationContextUtils.getWebApplicationContext(getServletContext

spring controller中@Value取不到applicationContext.xml中加载配置文件的问题

原因还未查证: http://sunjun041640.blog.163.com/blog/static/256268322014127113844746/ 在使用spring mvc时,实际上是两个spring容器: 1,dispatcher-servlet.xml 是一个,我们的controller就在这里,所以这个里面也需要注入属性文件 org.springframework.web.servlet.DispatcherServlet 这里最终是使用WebApplicationContex

SpringMVC中controller接收Json数据

SpringMVC中controller接收Json数据 1.jsp页面发送ajax的post请求: function postJson(){ var json = {"username" : "imp", "password" : "123456"}; $.ajax({ type : "post", url : "<%=basePath %>ajaxRequest", co

在JFinal的Controller中接收json数据

JFinal中接收URL中的参数或者model中的参数是很方便的,但是对于web2.0的网站来说,经常会以json方式提交比较复杂的数据,比如一个查询,包含了各种过滤条件和排序分页,前端脚本可能提交的数据是这样的: {     "type":1,     "key":"keyword",     "paging":{         "size":50,         "index":

SpringMVC中controller返回json数据的两种方法

SpringMVC中controller返回json数据的两种方法 1.jsp的ajax请求: function getJson(){ $.ajax({ type:"get", dataType:"json", url:"<%=basePath %>getJson", success:function(data){ for(var i=0;i<jsonData.length;i++){ alert("Id:"

asp.net mvc 3.0 知识点整理 ----- (2).Controller中几种Action返回类型对比

通过学习,我们可以发现,在Controller中提供了很多不同的Action返回类型.那么具体他们是有什么作用呢?它们的用法和区别是什么呢?通过资料书上的介绍和网上资料的查询,这里就来给大家列举和大致的概括下. (1). ActionResult(base):最基本的Action类型,返回其他类型都可以写ActionResult. (2). ContentResult:返回ContentResult用户定义的内容类型. public ActionResult Content() { return

Spring MVC中基于注解的 Controller

终于来到了基于注解的 Spring MVC 了.之前我们所讲到的 handler,需要根据 url 并通过 HandlerMapping 来映射出相应的 handler 并调用相应的方法以响应请求.实际上,ControllerClassNameHandlerMapping, MultiActionController 和选择恰当的 methodNameResolver(如 InternalPathMethodNameResolver) 就已经可以在很大程度上帮助我们省去不少的 XML 配置,谁让

ASP.NET MVC搭建项目后台UI框架—8、将View中选择的数据行中的部分数据传入到Controller中

ASP.NET MVC搭建项目后台UI框架—1.后台主框架 ASP.NET MVC搭建项目后台UI框架—2.菜单特效 ASP.NET MVC搭建项目后台UI框架—3.面板折叠和展开 ASP.NET MVC搭建项目后台UI框架—4.tab多页签支持 ASP.NET MVC搭建项目后台UI框架—5.Demo演示Controller和View的交互 ASP.NET MVC搭建项目后台UI框架—6.客户管理(添加.修改.查询.分页) ASP.NET MVC搭建项目后台UI框架—7.统计报表 ASP.NE

Springmvc框架-json数据格式传递过程中-将时间戳转化成标准的日期格式[email&#160;protected]

在上一个小demo中,我们能够看出,其实返回的日期格式也是不对的,现在返回的是一个时间戳,并不是一个标准的日期格式. 解决办法: 第一种:在要转化的实体类中添加@JSONField注解 第二种:配置fastjson的消息转换器,来处理日期格式的问题 springmvc-servlet.xml 1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns="http://www.spring