JsonIgnore无法在System.Web.Mvc.Controller中工作

时间:2015-08-22 20:37:50

标签: asp.net-mvc asp.net-web-api visual-studio-2015

我有一个web-API项目和一个包含一些属性的简单类,其中一些标记为<JsonIgnore>

在我的MVC控制器中,我放了Return Json(instanceOfMyClass, JsonRequestBehavior.AllowGet)。所有成员都是序列化的。 我把Return Json(Of MyClass)(instanceOfMyClass)放在我的WEBAPI控制器中。只有我打算序列化的成员才会出现。

如何独立于要序列化的控制器忽略这些属性。

2 个答案:

答案 0 :(得分:10)

MVC中的JsonResult实际上并不使用JSON.NET,这就是[JsonIgnore]无效的原因。相反,它使用JavaScriptSerializer类。

要使JavaScriptSerializer跳过属性,您可以在模型属性上使用[ScriptIgnore]属性。

另一种方法是创建一个自定义ActionResult,它使用JSON.NET的JsonConvert来序列化该对象,然后它将遵循[JsonIgnore]属性。

答案 1 :(得分:1)

以防万一,任何人都无法在.net Core应用程序中使用[ScriptIgnore],因此我做到了:

public IActionResult Index()
{
    Response.ContentType = "text/json";
    return Content(JsonConvert.SerializeObject(instanceOfMyClass));
}