我有一个web-API项目和一个包含一些属性的简单类,其中一些标记为<JsonIgnore>
。
在我的MVC控制器中,我放了Return Json(instanceOfMyClass, JsonRequestBehavior.AllowGet)
。所有成员都是序列化的。
我把Return Json(Of MyClass)(instanceOfMyClass)
放在我的WEBAPI控制器中。只有我打算序列化的成员才会出现。
如何独立于要序列化的控制器忽略这些属性。
答案 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));
}