我想知道如何省略序列化的特定属性。
问题是我无法使用[JsonIgnore]
或[IgnoreDataMember]
属性,因为我需要将此属性显示在其他位置。
以下是我的服务模式
public class Event
{
public long EventId { get; set; }
public string EventName { get; set; }
public DateTime? EventDate { get; set; }
public string EventLocalization { get; set; }
public string EventImage { get; set; }
public string EventUrl { get; set; }
public string EventDescription { get; set; }
public City City { get; set; }
}
public class City
{
public int CityId { get; set; }
public string CityName { get; set; }
public State State { get; set; }
public IEnumerable<Event> Events { get; set; }
}
当我从事件中请求JSON时,我会回到这样的事情:
[
{
"EventId": 1,
"EventName": "Alalala",
"EventDate": "2016-01-01T00:00:00",
"EventLocalization": "Musialka",
"EventImage": null,
"EventUrl": null,
"EventDescription": null,
"City": {
"CityId": 164,
"CityName": "Opole",
"State": {
"StateId": 8,
"StateName": "opolskie",
"Cities": null
},
"Events": null
},
"Category": {
"CategoryId": 1,
"CategoryName": "Teatr i Opera"
}
}
]
这是循环。城市模型由事件导航属性组成,但是当我要求事件的JSON时,我不想再显示事件。我只想显示CityId
,CityName
和State
属性。我无法在City模型中修饰IEnumerable<Event>
属性,因为当我要求City JSON时,我需要此属性来返回事件列表。
我发现我可以使用3个属性创建另一个模型:CityId
,CityName
和State
并将其作为属性包含在事件模型中而不是City属性中,但是包含50个模型这是一项相当庞大的工作。
我可以用其他方式解决这个问题吗?
答案 0 :(得分:0)
我建议创建一个城市
public class City
{
public int CityId { get; set; }
public string CityName { get; set; }
public State State { get; set; }
}
和一个CityWithEvents类
public class CityWithEvents : City
{
public IEnumerable<Event> Events { get; set; }
}
在课堂活动中,您需要存储对City类的引用,并且在任何时候如果您需要显示City Events,请初始化CityWithEvents类