ASP.Net MVC:如何基于原始Json数据创建JsonResult
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ASP.Net MVC:如何基于原始Json数据创建JsonResult相关的知识,希望对你有一定的参考价值。
有一个string
包含以下原始Json数据(为了问题简化):
var MyString = "{ 'val': 'apple' }";
如何创建代表JsonResult
的MyString
对象?
我试图使用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 API(MVC) 对APP接口(Json格式)接收数据与返回数据的统一管理
如何从 ASP.NET MVC 控制器方法返回由 JSON.NET 序列化的 camelCase JSON?
asp.net core序列化json配置,适用于mvc,webapi