У меня есть такая простая сущность в моем проекте ASP.NET MVC:
public class Folder : EntityData
{
public Folder()
{
IsStub = false;
}
[StringLength(300)]
public string Name { get; set; }
[JsonIgnore]
public bool IsStub { get; set; }
[ForeignKey("ParentFolderObj")]
public string ParentFolder { get; set; }
[JsonIgnore]
public Folder ParentFolderObj { get; set; }
[JsonIgnore]
public virtual ICollection<DesktopFolder> DesktopFolders { get; set; }
[JsonIgnore]
public virtual ICollection<UserFolder> UserFolders { get; set; }
}
EntityData - это класс, предоставляемый MobileAppServices SDK Azure:
public abstract class EntityData : ITableData
{
protected EntityData();
[Key]
[TableColumn(TableColumnType.Id)]
public string Id { get; set; }
[TableColumn(TableColumnType.Version)]
[Timestamp]
public byte[] Version { get; set; }
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Index(IsClustered = true)]
[TableColumn(TableColumnType.CreatedAt)]
public DateTimeOffset? CreatedAt { get; set; }
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
[TableColumn(TableColumnType.UpdatedAt)]
public DateTimeOffset? UpdatedAt { get; set; }
[TableColumn(TableColumnType.Deleted)]
public bool Deleted { get; set; }
}
В моем сериализованномНапример, когда я получаю все свои папки, я все равно вижу поле «IsStub», даже если оно помечено как [JsonIgnore].
Я использую Newtonsoft.Json для (де-) сериализации со следующими конфигурациямикоторые применяются ко всему проекту и настраиваются при загрузке:
HttpConfiguration config = new HttpConfiguration();
config.Formatters.JsonFormatter.SerializerSettings.ReferenceLoopHandling = ReferenceLoopHandling.Ignore;
config.Formatters.JsonFormatter.SerializerSettings.PreserveReferencesHandling = PreserveReferencesHandling.Objects;
config.Formatters.Remove(config.Formatters.XmlFormatter);
Как видите, есть другие поля [JsonIgnore], которые правильно не присутствуют в ответе, который выглядит следующим образом:
{
"deleted": false,
"updatedAt": null,
"createdAt": "2018-06-03T06:13:31.66Z",
"version": "AAAAAAAACJc=",
"id": "042d81b8-4599-43ec-b462-8cbaf6ecd672",
"parentFolder": null,
"isStub": false,
"name": "Folder636636104113385950"
}
Как сделать так, чтобы поле "IsStub"
исчезло из моего ответа?
Я также попытался пометить поле как [ScriptIgnore]
, но безуспешно.