【问题标题】:How to specific C# property to Json object in ASP.NET MVC?如何将 C# 属性指定给 ASP.NET MVC 中的 Json 对象?
【发布时间】:2019-08-26 02:39:19
【问题描述】:
++ 模型 公共类产品{ 公共 int ProductId { 获取;放; } 公共字符串产品名称 { 获取;放; } 公共数据表 dt = 新数据表(); 公共类别类别 = 新类别(); } ++控制器 公共 JsonResult 索引(){ 产品 dto = new Product(); dto.ProductId = 1; dto.ProductName = "可口可乐"; 返回 Json(dto, JsonRequestBehavior.AllowGet); }

如何具体Json对象,我的意思是只需要ProductId,ProductName等不需要Json对象。

++想要 { “产品编号”:1, “产品名称”:“可口可乐” }

【问题讨论】:

标签: c# asp.net json asp.net-mvc


【解决方案1】:

您可以在序列化或反序列化时对要从对象中排除的每个属性使用System.Web.Script.Serialization 中的[ScriptIgnore] 属性:

  using System.Web.Script.Serialization;

  public class Product{
        public int ProductId { get; set; }
        public string ProductName { get; set; }

        [ScriptIgnore]
        public DataTable dt = new DataTable();
        [ScriptIgnore]
        public Category Category = new Category();
    }

【讨论】:

  • 你能告诉我关于控制器的事情吗?
  • 控制器没问题,不需要做任何改动。
  • System.Web.Script.Serialization 尝试[ScriptIgnore] 而不是[JsonIgnore],让我知道它正在工作。
  • 使用 [ScriptIgnore] 而不是 [JsonIgnore] 它正在工作。谢谢。
  • 很高兴它有帮助。而且由于您使用的是 JavaScriptSerializer ,因此 [JsonIgnore] 对您不起作用。
【解决方案2】:

在同一个类中,创建两个返回布尔值的函数,如下所示:

 public bool ShouldSerializedt()
 {
      return false;
 }

 public bool ShouldSerializeCategory()
 {
      return false;
 }

函数返回布尔值。它的名字是ShouldSerialize<<PropertyName>>,boolean 的返回类型控制序列化行为

【讨论】:

  • 我不懂,我是初学者。
  • 在您定义 ProductId 、 ProductName 等属性的同一个 Product 类中,定义我提到的函数。检查两个函数的名称。名称以“ShouldSerialize”开头,以“dt”或“Category”结尾,它们是不应序列化的属性的名称。如果此类函数返回 false,则相应的属性将不会被序列化。
【解决方案3】:

最好使用C#序列化机制。出于这种“有限”序列化的目的,您可能需要单独的类(如果您希望在其他场景中序列化这些属性),但应该这样做。看看这里: How to exclude property from Json Serialization

【讨论】:

    【解决方案4】:

    用[JsonIgnore]注释要排除的字段

    【讨论】:

    • 我已经试过了 [JsonIgnore] 不行。但使用 [ScriptIgnore] 是可行的。从上面回答。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-12
    • 2011-12-30
    • 1970-01-01
    • 1970-01-01
    • 2020-06-22
    • 2015-07-23
    相关资源
    最近更新 更多