文档章节

C# MVC中返回JSON 对象

 大东家
发布于 2015/01/13 10:29
字数 245
阅读 21
收藏 0
public class JsonNetResult : ActionResult
{
  public Encoding ContentEncoding { get; set; }
  public string ContentType { get; set; }
  public object Data { get; set; }
 
  public JsonSerializerSettings SerializerSettings { get; set; }
  public Formatting Formatting { get; set; }
 
  public JsonNetResult()
  {
    SerializerSettings = new JsonSerializerSettings();
  }
 
  public override void ExecuteResult(ControllerContext context)
  {
    if (context == null)
      throw new ArgumentNullException("context");
 
    HttpResponseBase response = context.HttpContext.Response;
 
    response.ContentType = !string.IsNullOrEmpty(ContentType)
      ? ContentType
      : "application/json";
 
    if (ContentEncoding != null)
      response.ContentEncoding = ContentEncoding;
 
    if (Data != null)
    {
      JsonTextWriter writer = new JsonTextWriter(response.Output) { Formatting = Formatting };
 
      JsonSerializer serializer = JsonSerializer.Create(SerializerSettings);
      serializer.Serialize(writer, Data);
 
      writer.Flush();
    }
  }
}

This is an ActionResult I wrote to return JSON from ASP.NET MVC to the browser using Json.NET.

The benefit of using JsonNetResult over the built in JsonResult is you get a better serializer (IMO [:)]) and all the other benefits of Json.NET like nicely formatted JSON text.

http://james.newtonking.com/json/help/index.html

使用

public JsonNetResult Edit(String elementID, String tableName, String idInElementDetail)
        {
            BookElement be = new BookElement();
            String inputTemplate = be.getInputTemplateStringByID(elementID, Server.MapPath("~"));
            JObject outObject = new JObject();
            outObject.Add("inputTemplate",new JValue(inputTemplate));
            ElementInPage el = new ElementInPage();
            DataTable eData = el.getElementInPageDetail(tableName, idInElementDetail);
            JObject dataObject = new JObject();
            foreach (DataRow eRow in eData.Rows)
            {
                foreach (DataColumn eCol in eData.Columns)
                {
                    dataObject.Add(eCol.ColumnName,new JValue(eRow[eCol].ToString()));
                }
            }
            outObject.Add("elementData",dataObject);
            Debug.WriteLine("outdata:" + outObject.ToString());
            JsonNetResult jsonNet = new JsonNetResult();
            jsonNet.Data = outObject;
            return jsonNet;
        }

另外一种 就是JsonResult,这个是这个NewTon JSON包本身就支持的,但这个一般是从Model序列化而来。

© 著作权归作者所有

粉丝 22
博文 255
码字总数 111936
作品 0
长沙
项目经理
私信 提问
使用Json.NET来序列化所需的数据

我们在做开发的时候,很多时候需要和Json数据格式打交道,如Web开发里面,很多时候,数据通过Json进行传递到页面上,然后在进行处理的。而使用Json的时候,我们很多时候会涉及到几个序列化对...

walb呀
2017/12/04
0
0
使用 ASP.NET Core MVC 创建 Web API(四)

使用 ASP.NET Core MVC 创建 Web API 使用 ASP.NET Core MVC 创建 Web API(一) 使用 ASP.NET Core MVC 创建 Web API(二) 使用 ASP.NET Core MVC 创建 Web API(三) 十三、返回值 在上一...

DotNet菜园
04/18
0
0
MVC中处理Json和JS中处理Json对象

MVC中处理Json和JS中处理Json对象 ASP.NET MVC 很好的封装了Json,本文介绍MVC中处理Json和JS中处理Json对象,并提供详细的示例代码供参考。 MVC中已经很好的封装了Json,让我们很方便的进行...

蚊子888
2013/01/03
0
0
Spring MVC返回json视图时,如何将对象直接序列化成不带变量名做为根节点

Spring MVC返回json视图时,如何将对象直接序列化成不带变量名做为根节点的 json 报文 问题 问题描述起来比较拗口,其实就是用Spring MVC时,如何将对象映射成 json 报文时不把对象作为json的...

Tek_Eternal
2015/03/01
1K
1
MVC中的扩展点 ActionResult

ActionResult是控制器方法执行后返回的结果类型,控制器方法可以返回一个直接或间接从ActionResult抽象类继承的类型,如果返回的是非ActionResult类型,控制器将会将结果转换为一个ContentRe...

随智阔
2012/08/17
144
0

没有更多内容

加载失败,请刷新页面

加载更多

关于AsyncTask的onPostExcute方法是否会在Activity重建过程中调用的问题

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/XG1057415595/article/details/86774575 假设下面一种情况...

shzwork
今天
6
0
object 类中有哪些方法?

getClass(): 获取运行时类的对象 equals():判断其他对象是否与此对象相等 hashcode():返回该对象的哈希码值 toString():返回该对象的字符串表示 clone(): 创建并返此对象的一个副本 wait...

happywe
今天
6
0
Docker容器实战(七) - 容器中进程视野下的文件系统

前两文中,讲了Linux容器最基础的两种技术 Namespace 作用是“隔离”,它让应用进程只能看到该Namespace内的“世界” Cgroups 作用是“限制”,它给这个“世界”围上了一圈看不见的墙 这么一...

JavaEdge
今天
8
0
文件访问和共享的方法介绍

在上一篇文章中,你了解到文件有三个不同的权限集。拥有该文件的用户有一个集合,拥有该文件的组的成员有一个集合,然后最终一个集合适用于其他所有人。在长列表(ls -l)中这些权限使用符号...

老孟的Linux私房菜
今天
7
0
面试套路题目

作者:抱紧超越小姐姐 链接:https://www.nowcoder.com/discuss/309292?type=3 来源:牛客网 面试时候的潜台词 抱紧超越小姐姐 编辑于 2019-10-15 16:14:56APP内打开赞 3 | 收藏 4 | 回复24 ...

MtrS
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部