C# MVC中返回JSON 对象

2 篇文章 0 订阅
1 篇文章 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序列化而来。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值