zoukankan      html  css  js  c++  java
  • 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数据(两条记录)

     1 [
     2     {
     3         "DocumentID": "61d09198-198e-403e-89a0-01b98402c8ca",
     4         "DocumentFileName": "189017.docx.pdf",
     5         "ContentType": "doc",
     6         "Size": 167228,
     7         "InsertedDateUtc": "/Date(1358762613167)/",
     8         "LastModifiedOnDataSource": "/Date(1358504490000)/",
     9         "UniqueIDOnDataSource": "189017",
    10         "IsActive": true,
    11         "HasBeenIndexed": true,
    12         "TradeProductID": "1e04dc4d-5a68-4982-ba88-170a3f6525f5",
    13         "HasProcessedForAlerts": false,
    14         "Congress": "ESMO-2012",
    15         "Authors": "Zi Ming Zhao",
    16         "CongressType": "Poster",
    17         "DocumentTitle": "立普妥-一级预防中的应用                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ",
    18         "EntityState": 2,
    19         "EntityKey": {
    20             "EntitySetName": "Document",
    21             "EntityContainerName": "MVCExampleEntities",
    22             "EntityKeyValues": [
    23                 {
    24                     "Key": "DocumentID",
    25                     "Value": "61d09198-198e-403e-89a0-01b98402c8ca"
    26                 }
    27             ],
    28             "IsTemporary": false
    29         }
    30     },
    31     {
    32         "DocumentID": "a71ea30c-b544-41fa-b008-77adcf7a0250",
    33         "DocumentFileName": "189153.docx.pdf",
    34         "ContentType": "doc",
    35         "Size": 136195,
    36         "InsertedDateUtc": "/Date(1358762610573)/",
    37         "LastModifiedOnDataSource": "/Date(1358778247000)/",
    38         "UniqueIDOnDataSource": "189153",
    39         "IsActive": true,
    40         "HasBeenIndexed": true,
    41         "TradeProductID": "1e04dc4d-5a68-4982-ba88-170a3f6525f5",
    42         "HasProcessedForAlerts": false,
    43         "Congress": null,
    44         "Authors": null,
    45         "CongressType": null,
    46         "DocumentTitle": "立普妥-碾碎服用                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ",
    47         "EntityState": 2,
    48         "EntityKey": {
    49             "EntitySetName": "Document",
    50             "EntityContainerName": "MVCExampleEntities",
    51             "EntityKeyValues": [
    52                 {
    53                     "Key": "DocumentID",
    54                     "Value": "a71ea30c-b544-41fa-b008-77adcf7a0250"
    55                 }
    56             ],
    57             "IsTemporary": false
    58         }
    59     }
    60 ]
    View Code
    二、当得到的数据不能满足前台需求,比如,我希望加入一个键值对存入总记录数,以方便做分页。
     
       两种方法:
           1、拼字符串,注意return 的是Content( ).

    代码

     1 var allEntities = service.QueryByPage(this.GetSearchFilter(searchModel), "InsertedDateUtc  Descending", pageSize, searchModel.PageIndex + 1, out recordCount);
     2           
     3            string json = JsonConvert.SerializeObject(allEntities);
     4            StringBuilder sb = new StringBuilder();
     5            sb.Append("{");
     6            sb.Append(""total"");
     7            sb.Append(":280,");
     8            sb.Append(""rows"");
     9            sb.Append(":");
    10            sb.Append(json);
    11            sb.Append("}");
    12   return Content(sb.ToString());
    13  
    14           或者直接用String:   string jsonString = "{'total':280,'rows':" + json + "}";  (此方法用easyui测试时,前台无法解析)。
    15            return Content(jsonString);

    前台得到的Json数据

     1 {
     2     "total": 280,
     3     "rows": [
     4         {
     5             "$id": "1",
     6             "DocumentID": "61d09198-198e-403e-89a0-01b98402c8ca",
     7             "DocumentFileName": "189017.docx.pdf",
     8             "ContentType": "doc",
     9             "Size": 167228,
    10             "InsertedDateUtc": "2013-01-21T18:03:33.167",
    11             "LastModifiedOnDataSource": "2013-01-18T18:21:30",
    12             "UniqueIDOnDataSource": "189017",
    13             "IsActive": true,
    14             "HasBeenIndexed": true,
    15             "TradeProductID": "1e04dc4d-5a68-4982-ba88-170a3f6525f5",
    16             "HasProcessedForAlerts": false,
    17             "Congress": "ESMO-2012",
    18             "Authors": "Zi Ming Zhao",
    19             "CongressType": "Poster",
    20             "DocumentTitle": "立普妥-一级预防中的应用 ",
    21             "EntityKey": {
    22                 "$id": "2",
    23                 "EntitySetName": "Document",
    24                 "EntityContainerName": "MVCExampleEntities",
    25                 "EntityKeyValues": [
    26                     {
    27                         "Key": "DocumentID",
    28                         "Type": "System.Guid",
    29                         "Value": "61d09198-198e-403e-89a0-01b98402c8ca"
    30                     }
    31                 ]
    32             }
    33         },
    34         {
    35             "$id": "3",
    36             "DocumentID": "a71ea30c-b544-41fa-b008-77adcf7a0250",
    37             "DocumentFileName": "189153.docx.pdf",
    38             "ContentType": "doc",
    39             "Size": 136195,
    40             "InsertedDateUtc": "2013-01-21T18:03:30.573",
    41             "LastModifiedOnDataSource": "2013-01-21T22:24:07",
    42             "UniqueIDOnDataSource": "189153",
    43             "IsActive": true,
    44             "HasBeenIndexed": true,
    45             "TradeProductID": "1e04dc4d-5a68-4982-ba88-170a3f6525f5",
    46             "HasProcessedForAlerts": false,
    47             "Congress": null,
    48             "Authors": null,
    49             "CongressType": null,
    50             "DocumentTitle": "立普妥-碾碎服用 ",
    51             "EntityKey": {
    52                 "$id": "4",
    53                 "EntitySetName": "Document",
    54                 "EntityContainerName": "MVCExampleEntities",
    55                 "EntityKeyValues": [
    56                     {
    57                         "Key": "DocumentID",
    58                         "Type": "System.Guid",
    59                         "Value": "a71ea30c-b544-41fa-b008-77adcf7a0250"
    60                     }
    View Code

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

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

    EasyUi环境下有问题的Json

     1 {
     2     "ContentEncoding": null,
     3     "ContentType": null,
     4     "Data": {
     5         "total": 920,
     6         "rows": [
     7             {
     8                 "DocumentID": "61d09198-198e-403e-89a0-01b98402c8ca",
     9                 "DocumentFileName": "189017.docx.pdf",
    10                 "ContentType": "doc",
    11                 "Size": 167228,
    12                 "InsertedDateUtc": "/Date(1358762613167)/",
    13                 "LastModifiedOnDataSource": "/Date(1358504490000)/",
    14                 "UniqueIDOnDataSource": "189017",
    15                 "IsActive": true,
    16                 "HasBeenIndexed": true,
    17                 "TradeProductID": "1e04dc4d-5a68-4982-ba88-170a3f6525f5",
    18                 "HasProcessedForAlerts": false,
    19                 "Congress": "ESMO-2012",
    20                 "Authors": "Zi Ming Zhao",
    21                 "CongressType": "Poster",
    22                 "DocumentTitle": "立普妥-一级预防中的应用                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        ",
    23                 "EntityState": 2,
    24                 "EntityKey": {
    25                     "EntitySetName": "Document",
    26                     "EntityContainerName": "MVCExampleEntities",
    27                     "EntityKeyValues": [
    28                         {
    29                             "Key": "DocumentID",
    30                             "Value": "61d09198-198e-403e-89a0-01b98402c8ca"
    31                         }
    32                     ],
    33                     "IsTemporary": false
    34                 }
    35             },
    36             {
    37                 "DocumentID": "a71ea30c-b544-41fa-b008-77adcf7a0250",
    38                 "DocumentFileName": "189153.docx.pdf",
    39                 "ContentType": "doc",
    40                 "Size": 136195,
    41                 "InsertedDateUtc": "/Date(1358762610573)/",
    42                 "LastModifiedOnDataSource": "/Date(1358778247000)/",
    43                 "UniqueIDOnDataSource": "189153",
    44                 "IsActive": true,
    45                 "HasBeenIndexed": true,
    46                 "TradeProductID": "1e04dc4d-5a68-4982-ba88-170a3f6525f5",
    47                 "HasProcessedForAlerts": false,
    48                 "Congress": null,
    49                 "Authors": null,
    50                 "CongressType": null,
    51                 "DocumentTitle": "立普妥-碾碎服用                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            ",
    52                 "EntityState": 2,
    53                 "EntityKey": {
    54                     "EntitySetName": "Document",
    55                     "EntityContainerName": "MVCExampleEntities",
    56                     "EntityKeyValues": [
    57                         {
    58                             "Key": "DocumentID",
    59                             "Value": "a71ea30c-b544-41fa-b008-77adcf7a0250"
    60                         }
    61                     ],
    62                     "IsTemporary": false
    63                 }
    64             }
    65         ]
    66     },
    67     "JsonRequestBehavior": 0,
    68     "MaxJsonLength": null,
    69     "RecursionLimit": null
    70 }
    View Code

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

  • 相关阅读:
    OJ推荐【转】
    Eclipse插件推荐:UCDetector: Unnecessary Code Detector
    Android工程目录及其作用简介
    Source not found The JAR file …has no source attachment.
    Unable to execute dex: java.nio.BufferOverflowException. Check the Eclipse log for stack trace.
    Microsoft Visual C++ Runtime error解决方法
    Windows程序设计之Hello,Windows 98程序的声音调试记录
    没有谁是躺着成为谁的【转载】
    下一个7年,我是谁?【转载】
    UEditor编辑器使用教程 百度经验
  • 原文地址:https://www.cnblogs.com/net515/p/3289813.html
Copyright © 2011-2022 走看看