代码之家  ›  专栏  ›  技术社区  ›  SDReyes

Net MVC:如何基于原始Json数据创建JsonResult

  •  10
  • SDReyes  · 技术社区  · 14 年前

    string 包含以下原始Json数据(为解决问题而简化):

      var MyString =  "{ 'val': 'apple' }";
    

    JsonResult 对象表示 MyString

    我尝试使用Json(object)方法。但它将原始json数据作为字符串处理—逻辑上是:P-。因此,返回的HTTP响应如下所示:

    "{ 'val': 'apple' }"
    

    { 'val': 'apple' }
    

    这就是我想要实现的 :

    3 回复  |  直到 14 年前
        1
  •  24
  •   jpaugh JotaBe    7 年前

    这个 Json() 方法打开 Controller JsonResult . 如果我们看看 the source code for this class * ,我们可以看到它并没有做那么多--只是将内容类型设置为 application/json ,使用 JavaScriptSerializer ,并将结果字符串写入。。您可以通过返回 ContentResult 取而代之的是你的控制器。

    public ActionResult JsonData(int id) {
        var jsonStringFromSomewhere = "{ 'val': 'apple' }";
        // Content() creates a ContentResult just as Json() creates a JsonResult
        return Content(jsonStringFromSomewhere, "application/json");
    }
    

    从MVC2开始, JsonResult公司 如果用户正在发出HTTP GET请求(而不是POST),也会抛出异常。允许用户使用HTTP GET检索JSON security implications

        2
  •  1
  •   quakkels    14 年前

    我从字符串生成json数据的方法是使用 JavaScriptResult

    public JavaScriptResult jsonList( string jsonString)
    {
       jsonString = "var jsonobject = new Array(" + jsonString + ");";
       return JavaScript(jsonString)
    }
    

    然后,当您请求将json字符串传递给控制器中的该操作时,结果将是一个带有javascript头的文件。

        3
  •  0
  •   Hector Correa    14 年前

    我认为您可以使用JavaScriptSerializer类

    var js = new System.Web.Script.Serialization.JavaScriptSerializer();
    var jsonObject = js.Deserialize("{ 'val': 'apple' }", typeof(object));