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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ASP.Net MVC:如何基于原始Json数据创建JsonResult相关的知识,希望对你有一定的参考价值。

有一个string包含以下原始Json数据(为了问题简化):

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

如何创建代表JsonResultMyString对象?

我试图使用Json(对象)方法。但它将原始json数据作为字符串处理 - 逻辑:P-。所以返回的HTTP响应如下所示:

"{ 'val': 'apple' }"

而不是给定的原始Json数据:

{ 'val': 'apple' }

这就是我想要实现的目标:

答案

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开始,如果用户发出HTTP GET请求(而不是POST),JsonResult也会抛出异常。允许用户使用HTTP GET检索JSON具有security implications,在您在自己的应用程序中允许之前应该注意这一点。

另一答案

我从字符串生成json数据的方法是在控制器中使用JavaScriptResult

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

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

另一答案

我认为你可以使用JavaScriptSerializer类

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

以上是关于ASP.Net MVC:如何基于原始Json数据创建JsonResult的主要内容,如果未能解决你的问题,请参考以下文章

如何在asp.net mvc中返回复杂的Json对象

ASP.NET API(MVC) 对APP接口(Json格式)接收数据与返回数据的统一管理

如何从 ASP.NET MVC 控制器方法返回由 JSON.NET 序列化的 camelCase JSON?

asp.net core序列化json配置,适用于mvc,webapi

asp.net core序列化json配置,适用于mvc,webapi

如何在 ASP.NET MVC/Web 控制器中返回 JSON?