代码之家  ›  专栏  ›  技术社区  ›  Pure.Krome

如何在ASP.NET MVC中返回JSonResult

  •  3
  • Pure.Krome  · 技术社区  · 15 年前

    我的action方法中有以下数据作为字符串:

    string json = "[[1,2],[3,4],[5,6]]";
    

    简单。

    当我调用JSON视图时,它将结果封装在两个双引号中。这将阻止客户端javascript将此结果加载到javascript对象中。

    eg. 
    return Json(json);
    
    result => "[[1,2],[3,4],[5,6]]"
    

    但是,如果我将结果作为ContentResult返回,那么结果将被加载到一个JavaScript对象中,我可以用它做我需要做的任何事情。

    eg.
    return new ContentResult
    {
        Content = json,
        ContentType = "application/json",
        ContentEncoding =System.Text.Encoding.UTF8
    };
    
    result => [[1,2],[3,4],[5,6]]      
              (notice how the double quotes are missing?).
    

    那么,有人能解释一下我该怎么做吗?我觉得满足结果不是正确的方法。

    2 回复  |  直到 15 年前
        1
  •  6
  •   Matt Kocaj    15 年前

    我想 JsonResult 希望序列化传入的对象。而且,由于字符串或多或少是“序列化的”(用JSON术语),它所能做的就是看到对象是一个字符串,而在“JSON-Land”中,字符串文本在它们周围得到引号。

    如果将字符串更改为某种类型的强类型列表/集合/数组(表示字符串中的数据),它可能会正确序列化。

        2
  •  1
  •   Darko    15 年前

    我知道你可能需要一个服务器端的解决方案,但是如果你找不到,你可以在javascript客户端评估返回的字符串:

    var jsonResult = eval(resultWithQuotes);
    

    请注意,只有在从安全源获取结果时才应执行此操作,因为这可能导致加载恶意脚本。